数组创建 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 import numpy as nparr = np.array([1 , 2 , 3 , 4 , 5 ]) zeros = np.zeros((3 , 4 )) ones = np.ones((2 , 3 )) range_arr = np.arange(0 , 10 , 2 ) linspace_arr = np.linspace(0 , 1 , 5 ) random_arr = np.random.rand(3 , 3 ) randn_arr = np.random.randn(3 , 3 ) identity = np.eye(3 ) diagonal = np.diag([1 , 2 , 3 , 4 ])
数组属性 1 2 3 4 5 6 7 8 arr = np.array([[1 , 2 , 3 ], [4 , 5 , 6 ]]) print (arr.ndim) print (arr.shape) print (arr.size) print (arr.dtype) print (arr.itemsize) print (arr.nbytes)
数组操作 形状操作 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 arr = np.arange(12 ) reshaped = arr.reshape(3 , 4 ) flattened = arr.flatten() raveled = arr.ravel() transposed = reshaped.T expanded = np.expand_dims(arr, axis=0 ) a = np.array([[1 , 2 ], [3 , 4 ]]) b = np.array([[5 , 6 ]]) concatenated = np.concatenate((a, b), axis=0 ) vstacked = np.vstack((a, b)) hstacked = np.hstack((a, a.T))
数组分割 1 2 3 4 5 6 7 arr = np.arange(9 ).reshape(3 , 3 ) split_h = np.hsplit(arr, 3 ) split_v = np.vsplit(arr, 3 )
数学运算 基本运算 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 a = np.array([1 , 2 , 3 ]) b = np.array([4 , 5 , 6 ]) add = a + b sub = a - b mul = a * b div = b / a power = a ** 2 mod = b % a matrix_a = np.array([[1 , 2 ], [3 , 4 ]]) matrix_b = np.array([[5 , 6 ], [7 , 8 ]]) dot_product = np.dot(matrix_a, matrix_b) matrix_product = matrix_a @ matrix_b
通用函数(ufunc) 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 arr = np.array([1 , 2 , 3 ]) sqrt_arr = np.sqrt(arr) exp_arr = np.exp(arr) log_arr = np.log(arr) sin_arr = np.sin(arr) mean = np.mean(arr) std = np.std(arr) var = np.var(arr) sum_all = np.sum (arr) sum_axis = np.sum (matrix_a, axis=0 ) comparison = a > b
聚合函数 1 2 3 4 5 6 7 arr = np.array([1 , 2 , 3 , 4 , 5 ]) print (np.min (arr)) print (np.max (arr)) print (np.argmin(arr)) print (np.argmax(arr)) print (np.cumsum(arr))
广播机制 NumPy 广播规则:当两个数组维度不同时,较小的数组会”广播”到较大数组的形状。
1 2 3 4 5 6 7 8 9 10 11 arr = np.array([1 , 2 , 3 ]) result = arr + 5 a = np.array([[1 ], [2 ], [3 ]]) b = np.array([1 , 2 , 3 ]) result = a + b
索引与切片 基本索引 1 2 3 4 5 6 7 arr = np.arange(10 ) print (arr[2 ]) print (arr[2 :5 ]) print (arr[:5 ]) print (arr[5 :]) print (arr[::2 ]) print (arr[::-1 ])
多维数组索引 1 2 3 4 5 arr_2d = np.array([[1 , 2 , 3 ], [4 , 5 , 6 ], [7 , 8 , 9 ]]) print (arr_2d[1 , 2 ]) print (arr_2d[0 :2 , 1 :3 ]) print (arr_2d[:, 1 ])
布尔索引 1 2 3 4 5 6 7 8 arr = np.array([1 , 2 , 3 , 4 , 5 ]) filter = arr > 2 print (arr[filter ]) print (arr[arr % 2 == 0 ])
花式索引 1 2 3 4 5 6 7 8 arr = np.arange(12 ).reshape(3 , 4 ) print (arr[[0 , 2 ], [1 , 3 ]]) mask = np.array([True , False , True ]) print (arr[mask])
文件操作 1 2 3 4 5 6 7 8 9 10 arr = np.arange(10 ) np.save('array.npy' , arr) loaded = np.load('array.npy' ) np.savetxt('array.txt' , arr) loaded_txt = np.loadtxt('array.txt' )