NumPy 使用
介绍
数组对象:numpy.ndarray
参考资料
1 2 3 4 5 6 7 8 9 10 11
| np.argsort() np.sort()
i, j = np.unravel_index(np.argmin(arr, axis=None), arr.shape)
np.trapz()
new_arr = arr[arr[:, 1].argsort()]
|
使用
工具
数组创建
初始化 numpy 数组时,可以进行预分配
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
| import numpy as np
np.array([1, 2, 3])
np.eye() np.zeros() np.ones() np.full() np.arange() np.linspace() np.logspace() np.fromstring()
np.random.rand() np.random.randint() np.random.normal() np.random.uniform()
a = [f"{x:.1f}" for x in range(1, 10)] array = np.array(a, dtype=float)
|
属性
1 2 3 4
| dtype shape ndim size
|
索引
普通索引、切片索引、布尔索引
1 2
| arr[[1, 2], [1, 2]] arr[np.ix_([1, 2], [1, 2])]
|
二维数组的普通索引
二维数组的切片索引
数学运算
1 2 3 4 5 6 7 8
| * np.square() np.sqrt() np.cbrt() np.log2() np.round()
np.set_printoptions(suppress=True)
|
通用一元函数:参数是一个数组对象,函数会对数组进行元素级的处理
1 2 3 4 5 6 7 8 9 10 11 12 13 14
| abs / fabs sqrt square exp log / log10 / log2 sign ceil / floor isnan isfinite / isinf cos / cosh / sin sinh / tan / tanh arccos / arccosh / arcsin arcsinh / arctan / arctanh rint / round
|
通用二元函数:参数是两个数组对象,函数会对两个数组中的对应元素进行运算
1 2 3 4 5
| np.allclose(x, y) np.dot(x, y) np.inner(x, y) np.cross(x, y) intersect1d(x, y)
|
统计
axis
参数指定运算沿着哪一个轴来执行,不指定时为对整个数组
1 2 3 4 5 6
| np.sum() np.mean() np.min() np.max() np.std() np.var()
|
其他常用函数
函数调用:
- 方式 1:Numpy 模块本身的函数(即
np.function()
),如统计相关函数
- 方式 2:通过数组对象本身的方法(即
array.method()
),如数组创建函数,数学和线性代数操作等
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 27 28 29 30
| np.copy()
np.diff()
np.reshape() np.all() np.any()
tolist()
np.flatten()
np.unique()
return_count=True
np.hstack() np.vstack() np.append() np.insert() np.where() np.argwhere()
np.remainder()
np.isclose()
rtol atol
|
IO
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 27
| np.save("*.npy", arr) np.savez("*.npz", ...) *args **kwds
kwargs = {} for i in range(3): kwargs[f"array_{i}"] = ... np.savez("*.npz", **kwargs)
np.load(file)
arr = np.load("*.npy")
data = np.load("*.npz") data.files data["arr_0"]
np.dump() np.tofile()
np.savetxt() np.loadtxt()
np.genfromtxt()
|
线性代数
linalg
模块
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
| .T np.transpose()
@ np.matmul() np.dot()
np.outer() np.triu(..., k=...) arr.trace() np.linalg.trace() np.linalg.matrix_rank() np.linalg.inv() np.linalg.det() np.linalg.eig() np.linalg.qr() np.linalg.svd() np.linalg.solve() np.linalg.norm(x, ord="fro")
|
多项式
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23
| p = np.poly1d((2, 3, 1))
from numpy.polynomial import Polynomial
p = Polynomial((2, 3, 1))
coeffs coefficients
roots
deriv() integ()
polyfit(x, y, deg)
deg
np.polyval()
|