学科分类
目录
数据分析

线性代数模块

线性代数是数学运算中的一个重要工具,它在图形信号处理、音频信号处理中起非常重要的作用。numpy.linalg模块中有一组标准的矩阵分解运算以及诸如逆和行列式之类的东西。例如,矩阵相乘,如果我们通过“*”对两个数组相乘的话,得到的是一个元素级的积,而不是一个矩阵点积。

NumPy中提供了一个用于矩阵乘法的dot()方法,该方法的用法示例如下。

In [127]: arr_x = np.array([[1, 2, 3], [4, 5, 6]])
In [128]: arr_y = np.array([[1, 2], [3, 4], [5, 6]])
In [129]: arr_x.dot(arr_y)  # 等价于np.dot(arr_x, arr_y)
Out[129]:   
array([[22, 28],              
​     [49, 64]])

矩阵点积的条件是矩阵A的列数等于矩阵B的行数,假设A为 mp的矩阵,B为 pn 的矩阵,那么矩阵A与B的乘积就是一个 m*n 的矩阵C,其中矩阵C的第i行第j列的元素可以表示为:

img

上述矩阵arr_x与arr_y的乘积如图1所示:

img

图1 矩阵arr_x与arr_y的乘积

除此之外,linalg模块中还提供了其他很多有用的函数,具体如表1所示。

表1 linalg模块的常见函数

函数 描述
dot 矩阵乘法
diag 以一维数组的形式放回方阵的对角线,或将一维数组转为方阵
trace 计算对角线元素和
det 计算矩阵的行列式
eig 计算方阵的特征值和特征向量
inv 计算方阵的逆
qr 计算qr分解
svd 计算奇异值(SVD)
solve 解线性方程组Ax=b,其中A是一个方阵
lstsq 计算Ax=b的最小二乘解
点击此处
隐藏目录