线性代数#
NumPy 线性代数函数依赖于 BLAS 和 LAPACK,以提供标准线性代数算法的高效底层实现.这些库可能由 NumPy 本身提供,使用 C 版本的其参考实现的一个子集,但如果可能,最好使用利用专用处理器功能的高度优化库.此类库的示例包括 OpenBLAS,MKL (TM) 和 ATLAS.由于这些库是多线程的并且依赖于处理器,因此可能需要环境变量和外部包(例如 threadpoolctl)来控制线程数或指定处理器架构.
SciPy 库还包含一个 linalg 子模块,并且 SciPy 和 NumPy 子模块提供的功能存在重叠.SciPy 包含 numpy.linalg 中没有的函数,例如与 LU 分解和 Schur 分解相关的函数,计算伪逆的多种方法以及矩阵超越函数(例如矩阵对数).SciPy 中存在的某些函数在 scipy.linalg 中具有增强的功能.例如, scipy.linalg.eig 可以接受第二个矩阵参数来解决广义特征值问题.但是,NumPy 中的某些函数具有更灵活的广播选项.例如, numpy.linalg.solve 可以处理"堆叠"数组,而 scipy.linalg.solve 仅接受单个方阵数组作为其第一个参数.
备注
本页上使用的术语"矩阵"表示 2d numpy.array 对象,而不是 numpy.matrix 对象.不再推荐后者,即使对于线性代数也是如此.有关更多信息,请参见 the matrix object documentation .
@ 运算符#
在 NumPy 1.10.0 中引入,当计算 2d 数组之间的矩阵乘积时, @ 运算符优于其他方法. numpy.matmul 函数实现了 @ 运算符.
矩阵和向量积#
|
两个数组的点积. |
|
在单个函数调用中计算两个或多个数组的点积,同时自动选择最快的求值顺序. |
|
返回两个向量的点积. |
|
两个数组的向量点积. |
|
计算向量点积. |
|
两个数组的内积. |
|
计算两个向量的外积. |
|
计算两个向量的外积. |
|
两个数组的矩阵积. |
|
计算矩阵乘积. |
|
两个数组的矩阵-向量点积. |
|
两个数组的向量-矩阵点积. |
|
沿指定轴计算张量点积. |
|
沿指定轴计算张量点积. |
|
在操作数上计算爱因斯坦求和约定. |
|
通过考虑中间数组的创建,评估 einsum 表达式的最低成本收缩顺序. |
|
将方阵提升到(整数)幂 n . |
|
两个数组的 Kronecker 积. |
|
返回 3 元素向量的叉积. |
Decompositions#
|
Cholesky 分解. |
|
计算矩阵的 qr 分解. |
|
奇异值分解. |
|
返回矩阵(或矩阵堆栈) |
矩阵特征值#
|
计算方阵的特征值和右特征向量. |
|
返回一个复 Hermitian(共轭对称)或实对称矩阵的特征值和特征向量. |
计算一般矩阵的特征值. |
|
|
计算复 Hermitian 或实对称矩阵的特征值. |
Norms and other numbers#
|
矩阵或向量范数. |
|
计算矩阵(或矩阵堆叠) |
|
计算向量(或向量批次) |
|
计算矩阵的条件数. |
|
计算数组的行列式. |
|
使用SVD方法返回数组的矩阵秩 |
计算数组行列式的符号和(自然)对数. |
|
|
返回数组沿对角线的和. |
|
返回矩阵(或矩阵堆栈) |
Solving equations and inverting matrices#
|
求解线性矩阵方程或线性标量方程组. |
|
求解张量方程 |
|
返回线性矩阵方程的最小二乘解. |
|
计算矩阵的逆. |
|
计算矩阵的(Moore-Penrose)伪逆. |
|
计算 N 维数组的"逆". |
Other matrix operations#
|
返回指定的对角线. |
|
返回矩阵(或矩阵堆栈) |
|
转置矩阵(或矩阵堆栈) |
异常#
由 linalg 函数引发的通用 Python 异常派生对象. |
一次对多个矩阵进行线性代数运算#
如果将上面列出的几个线性代数程序堆叠到同一个数组中,则它们能够一次计算多个矩阵的结果.
这在文档中通过输入参数规范(如 a : (..., M, M) array_like )来指示.这意味着,例如,如果给定一个输入数组 a.shape == (N, M, M) ,则它被解释为 N 个矩阵的"堆栈",每个矩阵的大小为 M×M.类似的规范适用于返回值,例如行列式具有 det : (...) ,在这种情况下将返回一个形状为 det(a).shape == (N,) 的数组.这可以推广到对更高维度数组的线性代数运算:多维数组的最后 1 或 2 个维度被解释为向量或矩阵,这取决于每个运算.