NumPy là gì? Tổng quan kiến thức về Numpy

Bạn đang tìm hiểu NumPy là gì? Thì bạn không nên bỏ qua những gì chúng tôi sắp chia sẻ qua bài viết dưới đây. Đây là những thông tin hữu ích mà có thể giúp cho các lập trình viên nắm bắt được những khái niệm mới mẻ trong lập trình. Cùng tìm hiểu ngay nhé!

Giới thiệu về NumPy

Numpy là tên viết tắt của Numeric Python hoặc Numerical Python. Nó là một thư viện Python cung cấp các đối tượng mảng đa chiều, các đối tượng dẫn xuất khác nhau (ví dụ như mảng và ma trận có mặt nạ) và một loạt những quy trình hoạt động nhanh trên mảng. Nó bao gồm cả toán học, logic, thao tác hình dạng, sắp xếp, lựa chọn, I/O, biến đổi Fourier rời rạc, đại số tuyến tính cơ bản, hoạt động thống kê cơ bản, mô phỏng ngẫu nhiên và hơn thế nữa.

NumPy là gì?

NumPy là gì?

Hiểu một cách đơn giản hơn: Numpy chính là một thư viện cốt lõi cho tính toán khoa học của Python. Cung cấp một đối tượng mảng đa chiều với hiệu suất cao và những công cụ để làm việc với các mảng này.

Numpy Array cũng có thể được sử dụng như multidimensional container hiệu quả cho dữ liệu chung. Đây là một đối tượng mảng N chiều mạnh mẽ ở dạng hàng và cột. Bạn có thể khởi tạo các numpy arrays từ nested Python lists và truy cập các phần tử của nó.

Lịch sử phát triển numpy

Tổ tiên của Numpy, Numeric ban đầu được tạo ra bởi Jim Hugunin với sự đóng góp của một số nhà phát triển khác. Năm 2005, Travis Oliphant tạo ra NumPy bằng cách kết hợp các tính năng của numpy arrays cạnh tranh vào Numeric, với những sửa đổi sâu rộng hơn. Numpy là phần mềm mã nguồn mở có nhiều người đóng góp.

Và Numpy được phát hành vào năm 2006 với phiên bản 1.0. Dự án này là một phần của Scipy. Để tránh cài đặt gói SciPy lớn chỉ để lấy một đối tượng mảng, gói mới này đã được tách ra và được gọi là Numpy. Nó hỗ trợ cho Python 3 đã được thêm vào năm 2011 với phiên bản Numpy 1.5.0.

Năm 2011, PyPy bắt đầu phát triển việc triển khai API Numpy cho PyPy. Nó chưa hoàn toàn tương thích với Numpy.

Phiên bản mới nhất của Numpy là phiên bản 1.19.4, được phát hành vào 2/11/2020.

Bạn đọc tham khảo thêm: JSON Web Token là gì? Tổng quan kiến thức về JSON Web Token

NumPy cài đặt như thế nào? 

Để có thể cài đặt numpy, bạn cần đi tới command của bạn và nhập và pip install numpy. Sau khi cài đặt hoàn tất, hãy truy cập tới IDE của bạn và import bằng cách nhập: import numpy as np.

Cách cài đặt NumPy như thế nào?

Cách cài đặt NumPy như thế nào?

Cấu trúc dữ liệu ndarray

Chức năng cốt lõi numpy là ndarray, cho n- chiều, cấu trúc dữ liệu. Những mảng được khoảng cách của một mảng ý kiến về bộ nhớ. Ngược lại với cấu trúc dữ liệu danh sách dựng sẵn của Python, các mảng này được định kiểu đồng nhất để tất cả các phần tử của một mảng phải cùng kiểu.

Các mảng như vậy cũng có thể là các khung nhìn vào bộ đệm bộ nhớ được phân bổ các phần mở rộng C/C++, Cython và Fortran cho trình thông dịch CPython mà không cần phải sao chép các dữ liệu xung quanh. Mang lại mức độ tương thích với các thư viện số hiện có. Chức năng này được khai thác bởi gói SciPy, gói này bao bọc một số thư viện như vậy (đặc biệt là BLAS và LAPACK). NumPy có hỗ trợ tích hợp cho các ndarray được ánh xạ bộ nhớ.

Bạn đọc tham khảo thêm: Webpack là gì? Những thông tin cần nắm vững về webpack

Sự khác biệt giữa mảng numpy và ma trận là gì? Nên sử dụng cái nào?

Ma trận numpy hoàn toàn là 2 chiều, trong khi các mảng numpy là N chiều. Các đối tượng ma trận là một lớp con của ndarray. Vì thế chúng kế thừa tất cả những thuộc tính và phương thức của ndarray. 

Ưu điểm chính của ma trận numpy là chúng cung cấp một ký hiệu thuận tiện cho phép nhân ma trận: nếu a và b là ma trận thì a*b là sản phẩm ma trận của chúng.

import numpy as np

a = np.mat (‘4 3; 2 1’)

b = np.mat (‘1 2; 3 4’)

print (a)

# [ [4 3]

#   [2 1] ]

print (b)

# [ [1 2]

#   [3 4] ]

print (a*b)

# [ [13 20]

#   [5 8] ] 

Mặt khác, kể từ Python 3.5, numpy sẽ hỗ trợ nhân ma trận infix bằng cách sử dụng @ toán tử. Vì thế, bạn có thể đạt được sự thuận tiện tương tự của phép nhân ma trận với câu lệnh trong Python >= 3.5.

import numpy as np

a=np.array ( [ [4, 3], [2, 1] ])

b=np.array ( [ [1, 2], [3, 4] ])

print (a@b)

# [ [13 20]

#   [5    8] ]

Cả 2 đối tượng ma trận và ndarray đều .T phải trả về chuyển vị. Nhưng các đối tượng ma trận cũng có .H cho chuyển vị liên hợp và .I cho nghịch đảo.

Ngược lại, các mảng numpy luôn tuân thủ quy tắc rằng các hoạt động được áp dụng phần tử khôn ngoan (ngoại trừ @ toán tử mới). Do đó, nếu a b là mảng numpy thì a*b mảng được hình thành bằng cách nhân các thành phần khôn ngoan.

c=np.array ( [ [4, 3], [2, 1] ])

d=np.array ( [ [1, 2], [3, 4] ])

print (c*d)

# [ [4 6]

#   [6 4] ]

Để có được kết quả của phép nhân ma trận, bạn sử dụng np.dot (hoặc @ trong Python >=3.5, như được hiển thị ở trên): 

print (np.dot(c,d))

# [ [ 13 20]

#   [ 5     8] ]

Các ** nhà điều hành cũng cư xử khác nhau:

print ( a**2)

# [ [22 15]

#   [10  7 ]

print ( c**2)

# [ [16 9]

#   [ 4  1]

Vì a là một ma trận, a**2 trả về sản phẩm ma trận a*a. vì c là một ndarray, c**2 trả về một ndarray với mỗi thành phần bình phương thành phần tử.

Có sự khác biệt kỹ thuật khác giữa các đối tượng ma trận và ndarray (phải thực hiện với np.ravel, lựa chọn vật phẩm và hành vi chuỗi).

Ưu điểm chính của mảng numpy là chúng tổng quát hơn ma trận 2 chiều. Điều gì xảy ra khi bạn muốn 1 mảng 3 chiều? Sau đó, bạn phải sử dụng một ndarray, không phải là một đối tượng ma trận. Vì thế, học cách sử dụng các đối tượng ma trận là công việc nhiều hơn, bạn phải học các hoạt động của đối tượng ma trận và các hoạt động ndarray.

Viết một chương trình sử dụng cả ma trận và mảng làm cho cuộc sống của bạn trở nên khó khăn vì bạn phải theo dõi loại đối tượng của mình là gì, nhân lên sẽ trả về thứ bạn không mong đợi.

Ngược lại, nếu bạn chỉ gắn bó với ndarray, thì bạn có thể làm mọi thứ mà các đối tượng ma trận có thể làm, và hơn thế nữa, ngoại trừ với các hàm / ký hiệu hơi khác nhau.

Nếu bạn sẵn sàng từ bỏ sự hấp dẫn trực quan của ký hiệu sản phẩm ma trận NumPy (có thể đạt được gần như thanh lịch với các câu lệnh trong Python> = 3.5), thì tôi nghĩ rằng mảng NumPy chắc chắn là hướng đi.

Tái bút , bạn thực sự không phải chọn cái này với chi phí khác, vì np.asmatrix np.asarray cho phép bạn chuyển đổi cái này sang cái khác (miễn là mảng là 2 chiều).

Trên đây là một số thông tin về Numpy là gì.Nếu bạn còn bất kì thắc mắc nào vui lòng liên hệ với chúng tôi để được giải đáp.

Cám ơn bạn đã quan tâm!

Trả lời

Email của bạn sẽ không được hiển thị công khai. Các trường bắt buộc được đánh dấu *