scipy.linalg.pinv

scipy.linalg.pinv(a, atol=None, rtol=None, return_rank=False, check_finite=True, cond=None, rcond=None)[源代码]

计算矩阵的(Moore-Penrose)伪逆。

利用矩阵的奇异值分解计算矩阵的广义逆 U @ S @ V 在经济模式中,并且仅拾取与显著奇异值相关联的列/行。

如果 s 的最大奇异值。 a ,则有效分界值由以下公式确定 atol + rtol * s 。任何低于此值的奇异值都被认为是无关紧要的。

参数
a(M,N)类数组

要伪逆的矩阵。

ATOL:浮点,可选

绝对阈值项,默认值为0。

1.7.0 新版功能.

rtol:浮点,可选

相对阈值条件,默认值为 max(M, N) * eps 哪里 eps 的数据类型的计算机精度值。 a

1.7.0 新版功能.

return_rank布尔值,可选

如果为True,则返回矩阵的有效秩。

check_finite布尔值,可选

是否检查输入矩阵是否仅包含有限个数字。禁用可能会带来性能提升,但如果输入确实包含无穷大或NAN,则可能会导致问题(崩溃、非终止)。

条件,条件浮动,可选

在旧版本中,这些值用于 atol 使用 rtol=0 。如果两个都给了 rcond 覆盖 cond 因此密码是不正确的。因此,强烈建议使用以上公差,而不建议使用以上公差。事实上,如果提供,atol,rtol优先于这些关键字。

在 1.7.0 版更改: 不赞成,而赞成 rtolatol 参数,并将在未来的SciPy版本中删除。

在 1.3.0 版更改: 以前,缺省的中断值是 eps*f 哪里 f 曾经是 1e3 对于单精度和 1e6 为了双倍精度。

退货
B(N,M)ndarray

矩阵的伪逆 a

rank集成

矩阵的有效秩。如果出现以下情况,则返回 return_rank 是真的。

加薪
LinAlgError

如果奇异值分解计算不收敛。

示例

>>> from scipy import linalg
>>> rng = np.random.default_rng()
>>> a = rng.standard_normal((9, 6))
>>> B = linalg.pinv(a)
>>> np.allclose(a, a @ B @ a)
True
>>> np.allclose(B, B @ a @ B)
True