线性代数

线性代数的计算也是NumPy中的一个重要功能,这里仅针对常用的矩阵计算列举常用的重要功能。线性代数计算功能一般都包含在numpy.linalg模块中,如果有实际使用需要可以参考相关模块文档。

  • numpy.dot(arr1, arr2),计算两个数组的点积,对于矩阵等效于矩阵乘法,对于一维数组是向量的内积。
  • numpy.vdot(arr1, arr2),计算两个向量的点积。如果第一个参数是复数,则会使用其共轭复数进行计算;多维数组会被展开。
  • numpy.inner(arr1, arr2),计算一维数组的向量内积。对于多维数组,只返回最后一个轴上的向量内积。
  • numpy.matmul(arr1, arr2),计算两个数组的矩阵乘积。对于大于二维的数组,会将其视为存在于最后两个索引的矩阵的栈并进行广播。对于一维数组会自动进行升维,并在计算后降维。
  • numpy.linalg.det(arr),计算矩阵的行列式,对于矩阵\(\bigl[\begin{smallmatrix} a & b \\ c & d \end{smallmatrix}\bigr]\),其行列式计算为\(ad-bc\)。较大的矩阵会被认为是\(2\times 2\)矩阵的组合。
  • numpy.linalg.inv(arr),计算矩阵的逆。
  • numpy.linalg.solve(a, b),计算矩阵形式线性方程的解。例如有以下线性方程组:

$$ \begin{cases} x+y+z=6 \\ 2y+5z=-4 \\ 2x+5y-z=27 \end{cases} $$

可以转化为矩阵形式:

$$ \begin{bmatrix} 1 & 1 & 1 \\ 0 & 2 & 5 \\ 2 & 5 & -1 \end{bmatrix}\begin{bmatrix} x \\ y \\ z \end{bmatrix}=\begin{bmatrix} 6 \\ -4 \\ 27 \end{bmatrix} $$

也即是\(AX=B\)的形式,求解即是根据\(A\)和\(B\)来求出\(X\)。