numpy.linalg --- 线性代数例程

numpy.linalg 子模块提供了一小部分对 numpy.ndarray 对象进行操作的线性代数例程。对矩阵进行操作的函数要求传入二维数组;传入其他维数的数组会引发 ValueError。该子模块不支持复数 dtype。

函数

numpy.linalg.cholesky(A: ndarray) ndarray

计算正定对称方阵的 Cholesky 分解。

参数:

A -- 一个正定的、对称的二维方阵。

返回:

一个下三角的 numpy.ndarray L,满足 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 是一个 NN 的数组,其各列为对应的特征向量。

抛出:

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.ndarraytuplelistrange

  • axis -- 可选的计算范数所沿的轴。如果为 None(默认值),则对展平后的输入求范数并返回单个 float。否则沿该轴归约求范数并返回一个 numpy.ndarray

返回:

返回一个 Python float(当 axisNone 时,或当 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' 模式下,QR 分别被截断为前 min(M, N) 列和行。

返回:

一个由 numpy.ndarray 对象组成的二元组 (Q, R),满足 m == Q @ R,其中 Q 为标准正交矩阵,R 为上三角矩阵。

抛出:

该分解通过连续的 Givens 旋转实现。