numpy.linalg --- 线性代数例程¶
numpy.linalg 子模块提供了一小部分对 numpy.ndarray 对象进行操作的线性代数例程。对矩阵进行操作的函数要求传入二维数组;传入其他维数的数组会引发 ValueError。该子模块不支持复数 dtype。
函数¶
- numpy.linalg.cholesky(A: ndarray) ndarray¶
计算正定对称方阵的 Cholesky 分解。
- 参数:
A -- 一个正定的、对称的二维方阵。
- 返回:
一个下三角的
numpy.ndarrayL,满足A = L @ L.T。- 抛出:
ValueError -- 如果 A 不是方阵、不对称或不是正定的。
- numpy.linalg.det(m: ndarray) float¶
计算方阵的行列式。
- 参数:
m -- 一个二维方阵。
- 返回:
以 Python
float形式返回 m 的行列式。返回值始终为浮点数,即使输入是整数数组也是如此。- 抛出:
ValueError -- 如果 m 不是方阵。
该计算通过带部分主元选取的高斯消元法完成。
- numpy.linalg.eig(m: ndarray) tuple[ndarray, ndarray]¶
计算实对称方阵的特征值和特征向量。
- 参数:
m -- 一个二维的、实的、对称的方阵。
- 返回:
一个二元组
(eigenvalues, eigenvectors)。eigenvalues是一个长度为N的一维数组;eigenvectors是一个N乘N的数组,其各列为对应的特征向量。- 抛出:
ValueError -- 如果 m 不是方阵、不对称,或者 Jacobi 旋转迭代未能收敛。
- numpy.linalg.inv(m: ndarray) ndarray¶
计算方阵的逆。
- 参数:
m -- 一个二维方阵。
- 返回:
以浮点
numpy.ndarray形式返回 m 的逆。- 抛出:
ValueError -- 如果 m 不是方阵或为奇异矩阵。
求逆通过高斯-约旦消元法完成。
- numpy.linalg.norm(x: ndarray, axis: int | None = None) float | ndarray¶
计算向量或矩阵的 2-范数。
- 参数:
x -- 一个
numpy.ndarray、tuple、list或range。axis -- 可选的计算范数所沿的轴。如果为
None(默认值),则对展平后的输入求范数并返回单个float。否则沿该轴归约求范数并返回一个numpy.ndarray。
- 返回:
返回一个 Python
float(当 axis 为None时,或当 x 是 ndarray 以外的可迭代对象时),或者一个去除了该轴的numpy.ndarray。
2-范数通过
sqrt(sum(x*x))使用数值稳定的滑动均值计算,因此该操作不需要与输入大小成比例的额外存储空间。
- numpy.linalg.qr(m: ndarray, mode: str = 'reduced') tuple[ndarray, ndarray]¶
将矩阵分解为一个标准正交矩阵和一个上三角矩阵的乘积。
- 参数:
m -- 一个形状为
(M, N)的二维矩阵。mode -- 为
'reduced'(默认)或'complete'之一。在'complete'模式下,Q的形状为(M, M),R的形状为(M, N)。在'reduced'模式下,Q和R分别被截断为前min(M, N)列和行。
- 返回:
一个由
numpy.ndarray对象组成的二元组(Q, R),满足m == Q @ R,其中Q为标准正交矩阵,R为上三角矩阵。- 抛出:
TypeError -- 如果 m 不是
numpy.ndarray。ValueError -- 如果 m 不是二维的,或者 mode 不是可接受值之一。
该分解通过连续的 Givens 旋转实现。