当前位置: 首页>>代码示例 >>用法及示例精选 >>正文


Python numpy linalg.pinv用法及代码示例


本文简要介绍 python 语言中 numpy.linalg.pinv 的用法。

用法:

linalg.pinv(a, rcond=1e-15, hermitian=False)

计算矩阵的 (Moore-Penrose) pseudo-inverse。

使用矩阵的singular-value 分解 (SVD) 计算矩阵的广义逆,并包括所有大奇异值。

参数

a (…, M, N) 数组

矩阵或矩阵堆栈为pseudo-inverted。

rcond (...) 类似浮点数的数组

小奇异值的截止值。小于或等于rcond * largest_singular_value 的奇异值设置为零。针对矩阵堆栈进行广播。

hermitian 布尔型,可选

如果为 True,则假定 a 为 Hermitian(如果为实值,则为对称),从而可以更有效地找到奇异值。默认为假。

返回

B (…, N, M) ndarray

pseudo-inverse 的a.如果a是一个numpy.matrix实例,那么也是B.

抛出

LinAlgError

如果 SVD 计算不收敛。

注意

矩阵 A 的 pseudo-inverse 表示为 ,定义为:“‘solves’ [最小二乘问题] 的矩阵”,即,如果 是所述解,则 是这样的矩阵

可以证明,如果 是A的奇异值分解,则 ,其中 是正交矩阵, 是由A的所谓奇异值组成的对角矩阵,(如下,通常,由零组成),然后 只是由 A 的奇异值的倒数组成的对角矩阵(同样,后跟零)。 [1]

参考

1

G. Strang,线性代数及其应用,第 2 版,佛罗里达州奥兰多,学术出版社,1980 年,第 139-142 页。

例子

以下示例检查 a * a+ * a == aa+ * a * a+ == a+

>>> a = np.random.randn(9, 6)
>>> B = np.linalg.pinv(a)
>>> np.allclose(a, np.dot(a, np.dot(B, a)))
True
>>> np.allclose(B, np.dot(B, np.dot(a, B)))
True

相关用法


注:本文由纯净天空筛选整理自numpy.org大神的英文原创作品 numpy.linalg.pinv。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。