线性代数
Numpy可以用于计算矩阵相乘、分解矩阵、求解线性方程等线性代数问题。*在numpy中表示两个数组的乘积。numpy.linalg模块中会有矩阵计算经常用到的功能,如inv()函数,用于求解矩阵的逆矩阵。
- 可以使用solve()函数去求解线性方程组
{ x 1 + 2 x 2 = 2 2 x 1 − 2 x 2 = 4 \begin{cases} x_1+2x_2=2\\ 2x_1-2x_2=4 \end{cases} {x1+2x2=22x1−2x2=4
>>> import numpy.linalg as LA
>>> A = np.array([[1,2],[2,-1]])
>>> B = np.array([2,4])
>>> LA.solve(A,B)
array([2., 0.])
-
可以使用eig()函数求矩阵的特征值和特征向量
>>> q = np.diag((4,5,6)) >>> x, y = LA.eig(q)
-
mgrid()创建多维网络
>>> x, y = np.mgrid[0:6*np.pi:0.25, 0:4*np.pi:0.25] >>> x array([[ 0. , 0. , 0. , ..., 0. , 0. , 0. ], [ 0.25, 0.25, 0.25, ..., 0.25, 0.25, 0.25], [ 0.5 , 0.5 , 0.5 , ..., 0.5 , 0.5 , 0.5 ], ..., [18.25, 18.25, 18.25, ..., 18.25, 18.25, 18.25], [18.5 , 18.5 , 18.5 , ..., 18.5 , 18.5 , 18.5 ], [18.75, 18.75, 18.75, ..., 18.75, 18.75, 18.75]]) >>> y array([[ 0. , 0.25, 0.5 , ..., 12. , 12.25, 12.5 ], [ 0. , 0.25, 0.5 , ..., 12. , 12.25, 12.5 ], [ 0. , 0.25, 0.5 , ..., 12. , 12.25, 12.5 ], ..., [ 0. , 0.25, 0.5 , ..., 12. , 12.25, 12.5 ], [ 0. , 0.25, 0.5 , ..., 12. , 12.25, 12.5 ], [ 0. , 0.25, 0.5 , ..., 12. , 12.25, 12.5 ]])
-
where()函数
where(condition,[x,y])
>>> a = np.arange(5) >>> b = np.arange(5,10) >>> c = np.array([True, False, True, False, True]) >>> d = np.where(c,a,b) array([0, 6, 2, 8, 4])
第2、3个数也可以不是数组
>>> test = np.random.randint(0,20,10) >>> test array([14, 17, 17, 19, 1, 9, 7, 18, 7, 5]) >>> np.where(test > 10, 0, 1) array([0, 0, 0, 0, 1, 1, 1, 0, 1, 1])
-
统计函数
- sum():求整个数组或某轴上的元素的和
>>> test = np.random.randint(0,20,12).reshape(4,-1) >>> test array([[13, 2, 4], [13, 2, 17], [ 8, 1, 19], [19, 1, 18]]) >>> test.sum() 117 >>> test.sum(0) array([53, 6, 58]) # 表示列的和 >>> test.sum(1) array([19, 32, 28, 38]) # 表示行的和
-
mean():平均值,用法同sum
-
min()、max():大小值,同sum
-
std()、var():标准差方差,同sum
-
argmin()、argmax():最大最小值的索引,同sum
-
cumsum()计算数组元素的累加和
>>> test.cumsum(axis=0) # 和0是一样的 array([[13, 2, 4], [26, 4, 21], [34, 5, 40], [53, 6, 58]], dtype=int32)