numpy.linalg
NumPy线性代数函数依赖于BLAS和LAPACK来提供标准线性代数算法的高效低层实现。这些库可以由NumPy自己使用其参考实现子集的C版本来提供,但是在可能的情况下,最好使用利用专门处理器功能的高度优化的库。这类库的例子有 OpenBLAS, MKL(TM)和ATLAS。因为这些库是多线程和处理器相关的,所以环境变量和外部包 threadpoolctl 可能需要控制线程数或指定处理器体系结构。
SciPy库还包含 linalg 子模块,并且SciPy和NumPy子模块提供的功能有重叠。SciPy包含在中找不到的函数 numpy.linalg ,例如与LU分解和Schur分解有关的函数,计算伪逆的多种方法,以及矩阵超越数,例如矩阵对数。两者中存在的一些函数在中具有增强的功能 scipy.linalg . 例如, scipy.linalg.eig 可以采用第二个矩阵参数来解决广义特征值问题。但是,NumPy中的一些函数有更灵活的广播选项。例如, numpy.linalg.solve 可以处理“堆叠”数组,而 scipy.linalg.solve 仅接受单个方形数组作为其第一个参数。
linalg
scipy.linalg
scipy.linalg.eig
numpy.linalg.solve
scipy.linalg.solve
dot (a,b) [, out] )
dot
两个数组的点积。
linalg.multi_dot \(数组, * [, out] )
linalg.multi_dot
在单个函数调用中计算两个或多个数组的点积,同时自动选择最快的计算顺序。
vdot (a,b)
vdot
返回两个向量的点积。
inner (a,b)
inner
两个数组的内积。
outer (a,b) [, out] )
outer
计算两个向量的外积。
matmul \(x1,x2,)/[, out, casting, order, ...] )
matmul
两个数组的矩阵积。
tensordot (a,b) [, axes] )
tensordot
沿指定轴计算张量点积。
einsum \(下标, * 操作数 [, out, dtype, ...] )
einsum
评估操作数的爱因斯坦求和约定。
einsum_path \(下标, * 操作数 [, optimize] )
einsum_path
通过考虑创建中间数组,计算einsum表达式的最低成本收缩顺序。
linalg.matrix_power (a,n)
linalg.matrix_power
将平方矩阵提高到(整数)幂 n .
kron (a,b)
kron
两个阵列的克罗内克积。
linalg.cholesky (a)
linalg.cholesky
胆汁分解。
linalg.qr (a) [, mode] )
linalg.qr
计算矩阵的qr因子分解。
linalg.svd (a) [, full_matrices, compute_uv, ...] )
linalg.svd
奇异值分解。
linalg.eig (a)
linalg.eig
计算一个方阵的特征值和右特征向量。
linalg.eigh (a) [, UPLO] )
linalg.eigh
返回复厄米特矩阵(共轭对称)或实对称矩阵的特征值和特征向量。
linalg.eigvals (a)
linalg.eigvals
计算一般矩阵的特征值。
linalg.eigvalsh (a) [, UPLO] )
linalg.eigvalsh
计算复厄米特矩阵或实对称矩阵的特征值。
linalg.norm (x) [, ord, axis, keepdims] )
linalg.norm
矩阵或向量范数。
linalg.cond (x) [, p] )
linalg.cond
计算矩阵的条件数。
linalg.det (a)
linalg.det
计算数组的行列式。
linalg.matrix_rank (m) [, tol, hermitian] )
linalg.matrix_rank
用SVD方法返回数组的矩阵秩
linalg.slogdet (a)
linalg.slogdet
计算数组行列式的符号和(自然)对数。
trace (a) [, offset, axis1, axis2, dtype, out] )
trace
沿数组的对角线返回和。
linalg.solve (a,b)
linalg.solve
解线性矩阵方程或线性标量方程组。
linalg.tensorsolve (a,b) [, axes] )
linalg.tensorsolve
解张量方程 a x = b 为X。
a x = b
linalg.lstsq (a,b) [, rcond] )
linalg.lstsq
将最小二乘法返回到线性矩阵方程。
linalg.inv (a)
linalg.inv
计算矩阵的(乘法)逆矩阵。
linalg.pinv (a) [, rcond, hermitian] )
linalg.pinv
计算矩阵的(摩尔-彭罗斯)伪逆矩阵。
linalg.tensorinv (a) [, ind] )
linalg.tensorinv
计算n维数组的“逆”。
linalg.LinAlgError
Linalg函数引发的通用python异常派生对象。
1.8.0 新版功能.
上面列出的一些线性代数例程,如果将多个矩阵叠加到同一个数组中,就能够同时计算结果。
这在文档中通过输入参数规范(如 a : (..., M, M) array_like . 这意味着,如果给定一个输入数组 a.shape == (N, M, M) ,它被解释为n个矩阵的“堆栈”,每个矩阵的大小为m乘m。类似的规范适用于返回值,例如行列式 det : (...) 在这种情况下,将返回一个形状数组 det(a).shape == (N,) . 这推广到更高维数组上的线性代数运算:多维数组的最后一个1维或2维被解释为向量或矩阵,适用于每个运算。
a : (..., M, M) array_like
a.shape == (N, M, M)
det : (...)
det(a).shape == (N,)