Tìm hiểu NumPy
NumPy là một thư viện Python.
NumPy được sử dụng để làm việc với mảng.
NumPy là viết tắt của "Numerical Python" (Python số học).
NumPy là gì?
NumPy là một thư viện Python được sử dụng để làm việc với mảng.
Nó cũng có các hàm để làm việc trong lĩnh vực đại số tuyến tính, biến đổi Fourier và ma trận.
NumPy được tạo ra vào năm 2005 bởi Travis Oliphant. Nó là một dự án mã nguồn mở và bạn có thể sử dụng nó miễn phí.
NumPy là viết tắt của Numerical Python (Python số học).
Tại sao nên sử dụng NumPy?
Trong Python, chúng ta có danh sách (lists) phục vụ mục đích của mảng, nhưng chúng chậm khi xử lý.
NumPy hướng đến việc cung cấp một đối tượng mảng nhanh hơn tới 50 lần so với danh sách Python truyền thống.
Đối tượng mảng trong NumPy được gọi là
ndarray, nó cung cấp rất nhiều hàm hỗ trợ giúp việc làm việc với ndarray trở nên rất dễ dàng.Mảng được sử dụng rất thường xuyên trong khoa học dữ liệu, nơi tốc độ và tài nguyên rất quan trọng.
Tại sao NumPy nhanh hơn Lists?
Mảng NumPy được lưu trữ ở một vị trí liên tục trong bộ nhớ, không giống như danh sách, do đó các quy trình có thể truy cập và thao tác chúng rất hiệu quả
Hành vi này được gọi là tính cục bộ tham chiếu (locality of reference) trong khoa học máy tính.
Đây là lý do chính khiến NumPy nhanh hơn danh sách. Ngoài ra, nó được tối ưu hóa để hoạt động với các kiến trúc CPU mới nhất.
Cài đặt NumPy
Nếu bạn đã cài đặt Python và PIP trên hệ thống, việc cài đặt NumPy rất dễ dàng.
Cài đặt nó bằng lệnh sau:
C:\Users\Your Name>pip install numpy
Nhập NumPy
Sau khi NumPy được cài đặt, hãy nhập nó vào ứng dụng của bạn bằng cách thêm từ khóa
import:import numpy
Bây giờ NumPy đã được nhập và sẵn sàng sử dụng.
Ví dụ
import numpy arr = numpy.array([1, 2, 3, 4, 5]) print(arr)
NumPy dưới dạng np
NumPy thường được nhập dưới bí danh
npBí danh (alias): Trong Python, bí danh là một tên thay thế để tham chiếu đến cùng một thứ.
Tạo bí danh bằng từ khóa
as khi nhập:import numpy as np
Bây giờ, gói NumPy có thể được tham chiếu là
np thay vì numpy.Ví dụ
import numpy as np arr = np.array([1, 2, 3, 4, 5]) print(arr)
NumPy Creating Arrays
Tạo Đối tượng NumPy ndarray
NumPy được sử dụng để làm việc với mảng. Đối tượng mảng trong NumPy được gọi là
ndarray.Chúng ta có thể tạo một đối tượng NumPy
ndarray bằng cách sử dụng hàm array().Ví dụ
import numpy as np arr = np.array([1, 2, 3, 4, 5]) print(arr) print(type(arr))
Kết quả
[1 2 3 4 5] <class 'numpy.ndarray'>
type(): Hàm tích hợp sẵn này của Python cho chúng ta biết kiểu của đối tượng được truyền vào. Giống như trong đoạn mã trên, nó cho thấy arr có kiểu numpy.ndarray.Để tạo một
ndarray, chúng ta có thể truyền một danh sách, tuple hoặc bất kỳ đối tượng giống mảng nào vào phương thức array(), và nó sẽ được chuyển đổi thành một ndarray:Ví dụ
Sử dụng một tuple để tạo một mảng NumPy:
import numpy as np arr = np.array((1, 2, 3, 4, 5)) print(arr)
Kích thước trong Mảng
Một kích thước trong mảng là một cấp độ độ sâu của mảng (mảng lồng nhau).
mảng lồng nhau: là các mảng có các mảng làm phần tử của chúng.
Mảng 0-D
Mảng 0-D, hay Scalars, là các phần tử trong một mảng. Mỗi giá trị trong một mảng là một mảng 0-D.
Ví dụ
Tạo một mảng 0-D với giá trị 42:
import numpy as np arr = np.array(42) print(arr)
Mảng 1-D
Một mảng có các mảng 0-D làm phần tử của nó được gọi là mảng một chiều hoặc mảng 1-D.
Đây là các mảng phổ biến và cơ bản nhất.
Ví dụ
Tạo một mảng 1-D chứa các giá trị 1,2,3,4,5:
import numpy as np arr = np.array([1, 2, 3, 4, 5]) print(arr)
Mảng 2-D
Một mảng có các mảng 1-D làm phần tử của nó được gọi là mảng 2-D.
Chúng thường được sử dụng để biểu diễn ma trận hoặc tensor bậc 2.
NumPy có một module con dành riêng cho các thao tác ma trận, được gọi là
numpy.mat.Ví dụ
Tạo một mảng 2-D chứa hai mảng với các giá trị 1,2,3 và 4,5,6:
import numpy as np arr = np.array([[1, 2, 3], [4, 5, 6]]) print(arr)
Kết quả
[[1 2 3] [4 5 6]]
Mảng 3-D
Một mảng có các mảng 2-D (ma trận) làm phần tử của nó được gọi là mảng 3-D.
Chúng thường được sử dụng để biểu diễn tensor bậc 3.
Ví dụ
Tạo một mảng 3-D với hai mảng 2-D, cả hai đều chứa hai mảng với các giá trị 1,2,3 và 4,5,6:
import numpy as np arr = np.array([[[1, 2, 3], [4, 5, 6]], [[1, 2, 3], [4, 5, 6]]]) print(arr)
Kết quả
[[[1 2 3] [4 5 6]] [[1 2 3] [4 5 6]]]
Kiểm tra Số Lượng Kích Thước?
Mảng NumPy cung cấp thuộc tính
ndim trả về một số nguyên cho biết mảng có bao nhiêu kích thước.Ví dụ
Kiểm tra xem các mảng có bao nhiêu kích thước:
import numpy as np a = np.array(42) b = np.array([1, 2, 3, 4, 5]) c = np.array([[1, 2, 3], [4, 5, 6]]) d = np.array([[[1, 2, 3], [4, 5, 6]], [[1, 2, 3], [4, 5, 6]]]) print(a.ndim) print(b.ndim) print(c.ndim) print(d.ndim)
Kết quả
0 1 2 3
Mảng Nhiều Chiều Hơn
Một mảng có thể có bất kỳ số lượng kích thước nào.
Khi mảng được tạo, bạn có thể xác định số lượng kích thước bằng cách sử dụng đối số
ndmin.Ví dụ
Tạo một mảng với 5 kích thước và xác minh rằng nó có 5 kích thước:
import numpy as np arr = np.array([1, 2, 3, 4], ndmin=5) print(arr) print('number of dimensions :', arr.ndim)
Kết quả
[[[[[1 2 3 4]]]]] number of dimensions : 5
Trong mảng này, kích thước trong cùng (kích thước thứ 5) có 4 phần tử, kích thước thứ 4 có 1 phần tử là vectơ, kích thước thứ 3 có 1 phần tử là ma trận với vectơ, kích thước thứ 2 có 1 phần tử là mảng 3D và kích thước thứ 1 có 1 phần tử là mảng 4D.
NumPy Array Indexing
Truy cập Phần tử Mảng
Chỉ mục mảng (Array indexing) giống như việc truy cập một phần tử mảng.
Bạn có thể truy cập một phần tử mảng bằng cách tham chiếu đến số chỉ mục của nó.
Các chỉ mục trong mảng NumPy bắt đầu từ 0, nghĩa là phần tử đầu tiên có chỉ mục 0 và phần tử thứ hai có chỉ mục 1, v.v.
Ví dụ
Lấy phần tử đầu tiên từ mảng sau:
import numpy as np arr = np.array([1, 2, 3, 4]) print(arr[0])
Kết quả
1
Ví dụ
Lấy phần tử thứ hai từ mảng sau:
import numpy as np arr = np.array([1, 2, 3, 4]) print(arr[1])
Kết quả
2
Truy cập Mảng 2-D
Để truy cập các phần tử từ mảng 2-D, chúng ta có thể sử dụng các số nguyên được phân tách bằng dấu phẩy, biểu thị kích thước và chỉ mục của phần tử.
Hãy coi mảng 2-D như một bảng có hàng và cột, trong đó kích thước biểu thị hàng và chỉ mục biểu thị cột.
Ví dụ
Truy cập phần tử ở hàng đầu tiên, cột thứ hai:
import numpy as np arr = np.array([[1, 2, 3, 4, 5], [6, 7, 8, 9, 10]]) print('Phần tử thứ 2 ở hàng 1: ', arr[0, 1])
Kết quả
Phần tử thứ 2 ở hàng 1: 2
Chỉ mục Âm (Negative Indexing)
Sử dụng chỉ mục âm để truy cập một mảng từ cuối.
Ví dụ
In phần tử cuối cùng từ chiều thứ 2:
import numpy as np arr = np.array([[1, 2, 3, 4, 5], [6, 7, 8, 9, 10]]) print('Phần tử cuối cùng từ chiều thứ 2: ', arr[1, -1])
Kết quả
Phần tử cuối cùng từ chiều thứ 2: 10
NumPy Array Slicing
Cắt mảng (Slicing arrays)
Cắt trong Python có nghĩa là lấy các phần tử từ một chỉ mục đã cho đến một chỉ mục đã cho khác.
Chúng ta truyền lát cắt thay vì chỉ mục như sau:
[start:end].Chúng ta cũng có thể xác định bước, như sau:
[start:end:step].Nếu chúng ta không truyền
start, nó được coi là 0.Nếu chúng ta không truyền
end, nó được coi là độ dài của mảng trong chiều đó.Nếu chúng ta không truyền
step, nó được coi là 1.Ví dụ
Cắt các phần tử từ chỉ mục 1 đến chỉ mục 5 từ mảng sau:
import numpy as np arr = np.array([1, 2, 3, 4, 5, 6, 7]) print(arr[1:5])
Kết quả
[2 3 4 5]
Lưu ý: Kết quả bao gồm chỉ mục bắt đầu, nhưng không bao gồm chỉ mục kết thúc.
Ví dụ
Cắt các phần tử từ chỉ mục 4 đến cuối mảng:
import numpy as np arr = np.array([1, 2, 3, 4, 5, 6, 7]) print(arr[4:])
Kết quả
[5 6 7]
Ví dụ
Cắt các phần tử từ đầu đến chỉ mục 4 (không bao gồm):
import numpy as np arr = np.array([1, 2, 3, 4, 5, 6, 7]) print(arr[:4])
Kết quả
[1 2 3 4]
Negative Slicing
Sử dụng toán tử dấu trừ để tham chiếu đến một chỉ mục từ cuối:
Ví dụ
Cắt từ chỉ mục 3 từ cuối đến chỉ mục 1 từ cuối:
import numpy as np arr = np.array([1, 2, 3, 4, 5, 6, 7]) print(arr[-3:-1])
Kết quả
[5 6]
BƯỚC (STEP)
Sử dụng giá trị
step để xác định bước của lát cắt:Ví dụ
Trả về mọi phần tử khác từ chỉ mục 1 đến chỉ mục 5:
import numpy as np arr = np.array([1, 2, 3, 4, 5, 6, 7]) print(arr[1:5:2])
Kết quả
[2 4]
Ví dụ
Trả về mọi phần tử khác từ toàn bộ mảng:
import numpy as np arr = np.array([1, 2, 3, 4, 5, 6, 7]) print(arr[::2])
Kết quả
[1 3 5 7]
Slicing 2-D Arrays
Ví dụ
Từ phần tử thứ hai, cắt các phần tử từ chỉ mục 1 đến chỉ mục 4 (không bao gồm):
import numpy as np arr = np.array([[1, 2, 3, 4, 5], [6, 7, 8, 9, 10]]) print(arr[1, 1:4])
Kết quả
[7 8 9]
Lưu ý: Hãy nhớ rằng phần tử thứ hai có chỉ mục 1.
Ví dụ
Từ cả hai phần tử, trả về chỉ mục 2:
import numpy as np arr = np.array([[1, 2, 3, 4, 5], [6, 7, 8, 9, 10]]) print(arr[0:2, 2])
Kết quả
[3 8]
Ví dụ
Từ cả hai phần tử, cắt chỉ mục 1 đến chỉ mục 4 (không bao gồm), điều này sẽ trả về một mảng 2-D:
import numpy as np arr = np.array([[1, 2, 3, 4, 5], [6, 7, 8, 9, 10]]) print(arr[0:2, 1:4])
Kết quả
[[2 3 4] [7 8 9]]
