NumPy là một phần mở rộng của ngôn ngữ lập trình Python, bổ sung hỗ trợ cho các mảng và ma trận lớn, đa chiều [số], cùng với một thư viện lớn các hàm toán học cấp cao để hoạt động trên các mảng này
nguồn
Kevin Markham. https. //github. com/justmarkham
thời gian tính toán
nhập numpy dưới dạng np
l = [v cho v trong phạm vi [10 ** 8]] s = 0 % thời gian cho v trong l. s += v
mảng = np. arange[10 ** 8] %time mảng. Tổng[]
Tạo mảng¶
Tạo ndarrays từ danh sách. Ghi chú. mọi phần tử phải cùng loại [sẽ được chuyển đổi nếu có thể]
import numpy as np data1 = [1, 2, 3, 4, 5] # list arr1 = np.array[data1] # 1d array data2 = [range[1, 5], range[5, 9]] # list of lists arr2 = np.array[data2] # 2d array arr2.tolist[] # convert array back to list
Ngoài
[[1, 2, 3, 4], [5, 6, 7, 8]]
tạo mảng đặc biệt
np.zeros[10] np.zeros[[3, 6]] np.ones[10] np.linspace[0, 1, 5] # 0 to 1 [inclusive] with 5 points np.logspace[0, 3, 4] # 10^0 to 10^3 [inclusive] with 4 points
Ngoài
array[[ 1., 10., 100., 1000.]]
arange giống như phạm vi, ngoại trừ nó trả về một mảng [không phải danh sách]
int_array = np.arange[5] float_array = int_array.astype[float]
Kiểm tra mảng¶
arr1.dtype # float64 arr2.ndim # 2 arr2.shape # [2, 4] - axis 0 is rows, axis 1 is columns arr2.size # 8 - total number of elements len[arr2] # 2 - size of first dimension [aka axis]
Ngoài
2
Định hình lại¶
arr = np.arange[10, dtype=float].reshape[[2, 5]] print[arr.shape] print[arr.reshape[5, 2]]
Ngoài
________số 8
Thêm một trục
a = np.array[[0, 1]] a_col = a[:, np.newaxis] print[a_col] #or a_col = a[:, None]
Ngoài
[[1, 2, 3, 4], [5, 6, 7, 8]]0
chuyển vị
[[1, 2, 3, 4], [5, 6, 7, 8]]1
Ngoài
[[1, 2, 3, 4], [5, 6, 7, 8]]2
làm phẳng. luôn trả về một bản sao phẳng của mảng ban đầu
[[1, 2, 3, 4], [5, 6, 7, 8]]3
Ngoài
[[1, 2, 3, 4], [5, 6, 7, 8]]4
Ravel. trả về chế độ xem của mảng ban đầu bất cứ khi nào có thể
[[1, 2, 3, 4], [5, 6, 7, 8]]5
Ngoài
[[1, 2, 3, 4], [5, 6, 7, 8]]6
Tóm tắt về trục, định hình lại/làm phẳng và lựa chọn¶
Numpy nội bộ. Theo mặc định, Numpy sử dụng quy ước C, tức là ngôn ngữ Row-major. Ma trận được lưu trữ bởi các hàng. Trong C, chỉ mục cuối cùng thay đổi nhanh nhất khi một người di chuyển qua mảng được lưu trữ trong bộ nhớ
Đối với mảng 2D, việc di chuyển tuần tự trong bộ nhớ sẽ
- lặp qua các hàng [trục 0]
lặp qua các cột [trục 1]
Đối với mảng 3D, việc di chuyển tuần tự trong bộ nhớ sẽ
- lặp qua các kế hoạch [trục 0]
- lặp qua các hàng [trục 1]
lặp qua các cột [trục 2]
- lặp qua các hàng [trục 1]
[[1, 2, 3, 4], [5, 6, 7, 8]]7
Ngoài
[[1, 2, 3, 4], [5, 6, 7, 8]]8
Định hình lại thành 3D [trục 0, trục 1, trục 2]
[[1, 2, 3, 4], [5, 6, 7, 8]]9
Ngoài
np.zeros[10] np.zeros[[3, 6]] np.ones[10] np.linspace[0, 1, 5] # 0 to 1 [inclusive] with 5 points np.logspace[0, 3, 4] # 10^0 to 10^3 [inclusive] with 4 points0
Lựa chọn lấy kế hoạch đầu tiên
np.zeros[10] np.zeros[[3, 6]] np.ones[10] np.linspace[0, 1, 5] # 0 to 1 [inclusive] with 5 points np.logspace[0, 3, 4] # 10^0 to 10^3 [inclusive] with 4 points1
Ngoài
np.zeros[10] np.zeros[[3, 6]] np.ones[10] np.linspace[0, 1, 5] # 0 to 1 [inclusive] with 5 points np.logspace[0, 3, 4] # 10^0 to 10^3 [inclusive] with 4 points2
Lựa chọn lấy hàng đầu tiên
np.zeros[10] np.zeros[[3, 6]] np.ones[10] np.linspace[0, 1, 5] # 0 to 1 [inclusive] with 5 points np.logspace[0, 3, 4] # 10^0 to 10^3 [inclusive] with 4 points3
Ngoài
np.zeros[10] np.zeros[[3, 6]] np.ones[10] np.linspace[0, 1, 5] # 0 to 1 [inclusive] with 5 points np.logspace[0, 3, 4] # 10^0 to 10^3 [inclusive] with 4 points4
Lựa chọn lấy cột đầu tiên
np.zeros[10] np.zeros[[3, 6]] np.ones[10] np.linspace[0, 1, 5] # 0 to 1 [inclusive] with 5 points np.logspace[0, 3, 4] # 10^0 to 10^3 [inclusive] with 4 points5
Ngoài
np.zeros[10] np.zeros[[3, 6]] np.ones[10] np.linspace[0, 1, 5] # 0 to 1 [inclusive] with 5 points np.logspace[0, 3, 4] # 10^0 to 10^3 [inclusive] with 4 points6
Ví dụ đơn giản với 2 mảng
Tập thể dục
Nhận dòng thứ hai
Nhận cột thứ ba
np.zeros[10] np.zeros[[3, 6]] np.ones[10] np.linspace[0, 1, 5] # 0 to 1 [inclusive] with 5 points np.logspace[0, 3, 4] # 10^0 to 10^3 [inclusive] with 4 points7
Ngoài
np.zeros[10] np.zeros[[3, 6]] np.ones[10] np.linspace[0, 1, 5] # 0 to 1 [inclusive] with 5 points np.logspace[0, 3, 4] # 10^0 to 10^3 [inclusive] with 4 points8
Ravel
np.zeros[10] np.zeros[[3, 6]] np.ones[10] np.linspace[0, 1, 5] # 0 to 1 [inclusive] with 5 points np.logspace[0, 3, 4] # 10^0 to 10^3 [inclusive] with 4 points9
Ngoài
[[1, 2, 3, 4], [5, 6, 7, 8]]8
Ngăn xếp mảng¶
array[[ 1., 10., 100., 1000.]]1
xếp ngang
array[[ 1., 10., 100., 1000.]]2
Ngoài
array[[ 1., 10., 100., 1000.]]3
xếp chồng dọc
array[[ 1., 10., 100., 1000.]]4
Ngoài
array[[ 1., 10., 100., 1000.]]5
Dọc mặc định
array[[ 1., 10., 100., 1000.]]6
Ngoài
array[[ 1., 10., 100., 1000.]]5
Lựa chọn¶
Một vật thể
array[[ 1., 10., 100., 1000.]]8
Ngoài
array[[ 1., 10., 100., 1000.]]9
Cắt lát¶
cú pháp.
24 với
25 [mặc định 0]
26 [mặc định cuối cùng]
27 [mặc định 1]
int_array = np.arange[5] float_array = int_array.astype[float]0
Ngoài
int_array = np.arange[5] float_array = int_array.astype[float]1
Cắt lát trả về một dạng xem [không phải bản sao] Sửa đổi
int_array = np.arange[5] float_array = int_array.astype[float]2
Ngoài
int_array = np.arange[5] float_array = int_array.astype[float]3
Hàng 0. thứ tự đảo ngược
int_array = np.arange[5] float_array = int_array.astype[float]4
Ngoài
int_array = np.arange[5] float_array = int_array.astype[float]5
lập chỉ mục ưa thích. Lập chỉ mục mảng số nguyên hoặc boolean¶
Lập chỉ mục ưa thích trả về một bản sao không phải là một dạng xem
Lập chỉ mục mảng số nguyên
int_array = np.arange[5] float_array = int_array.astype[float]6
Ngoài
int_array = np.arange[5] float_array = int_array.astype[float]7
Lập chỉ mục mảng Boolean
int_array = np.arange[5] float_array = int_array.astype[float]8
Ngoài
int_array = np.arange[5] float_array = int_array.astype[float]9
Tuy nhiên, trong bối cảnh lập chỉ mục lvalue [giá trị bên trái của một phép gán] Fancy cho phép sửa đổi mảng ban đầu
arr1.dtype # float64 arr2.ndim # 2 arr2.shape # [2, 4] - axis 0 is rows, axis 1 is columns arr2.size # 8 - total number of elements len[arr2] # 2 - size of first dimension [aka axis]0
Ngoài
arr1.dtype # float64 arr2.ndim # 2 arr2.shape # [2, 4] - axis 0 is rows, axis 1 is columns arr2.size # 8 - total number of elements len[arr2] # 2 - size of first dimension [aka axis]1
Lập chỉ mục mảng Boolean tiếp tục
arr1.dtype # float64 arr2.ndim # 2 arr2.shape # [2, 4] - axis 0 is rows, axis 1 is columns arr2.size # 8 - total number of elements len[arr2] # 2 - size of first dimension [aka axis]2
Ngoài
arr1.dtype # float64 arr2.ndim # 2 arr2.shape # [2, 4] - axis 0 is rows, axis 1 is columns arr2.size # 8 - total number of elements len[arr2] # 2 - size of first dimension [aka axis]3
Hoạt động véc tơ¶
arr1.dtype # float64 arr2.ndim # 2 arr2.shape # [2, 4] - axis 0 is rows, axis 1 is columns arr2.size # 8 - total number of elements len[arr2] # 2 - size of first dimension [aka axis]4
Ngoài
arr1.dtype # float64 arr2.ndim # 2 arr2.shape # [2, 4] - axis 0 is rows, axis 1 is columns arr2.size # 8 - total number of elements len[arr2] # 2 - size of first dimension [aka axis]5
Phát thanh truyền hình¶
nguồn. https. // tài liệu. scipy. org/doc/numpy-1. 13. 0/người dùng/cơ bản. phát thanh truyền hình. html Chuyển đổi ngầm định để cho phép thao tác trên các mảng có kích thước khác nhau. - Mảng nhỏ hơn được kéo dài hoặc “phát sóng” trên mảng lớn hơn để chúng có hình dạng tương thích. - Thao tác vector hóa nhanh trong C thay vì Python. - Không cần sao chép
Quy tắc¶
Bắt đầu với trục theo dõi và làm việc ngược lại, Numpy so sánh các kích thước mảng
Nếu hai chiều bằng nhau thì tiếp tục
Nếu một trong các toán hạng có kích thước 1 kéo dài nó để khớp với toán hạng lớn nhất
Khi một trong các hình dạng hết kích thước [vì nó có ít kích thước hơn hình dạng khác], Numpy sẽ sử dụng 1 trong quá trình so sánh cho đến khi hình dạng kia cũng hết kích thước
NumPy có thể xử lý ma trận lớn đến mức nào?
NumPy là một thư viện cực kỳ hữu ích và khi sử dụng nó, tôi nhận thấy rằng nó có khả năng xử lý các ma trận khá lớn [ 10000 x 10000] easily, but begins to struggle with anything much larger [trying to create a matrix of 50000 x 50000 fails]. Obviously, this is because of the massive memory requirements.Làm cách nào để xây dựng ma trận trong Python?
1. 2 Tạo ma trận .Vấn đề. Bạn cần tạo một ma trậnDung dịch. Sử dụng NumPy để tạo mảng hai chiều. # Tải thư viện nhập numpy dưới dạng np # Tạo ma trận matrix = np. mảng [[[ 1 , 2 ], [ 1 , 2 ], [ 1 , 2 ]]]Thảo luận. Để tạo ma trận, chúng ta có thể sử dụng mảng hai chiều NumPy. .Xem thêm. Ma trận, WikipediaLàm cách nào để tạo ma trận trong NumPy?
Chúng ta có thể tạo ma trận trong Numpy bằng cách sử dụng các hàm như array[], ndarray[] hoặc matrix[] . Hàm ma trận theo mặc định tạo một mảng 2D chuyên biệt từ đầu vào đã cho. Đầu vào phải ở dạng một chuỗi hoặc một đối tượng giống như mảng.