本文简要介绍 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]
参考:
G. Strang,线性代数及其应用,第 2 版,佛罗里达州奥兰多,学术出版社,1980 年,第 139-142 页。
1:
例子:
以下示例检查
a * a+ * a == a
和a+ * 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
相关用法
- Python numpy linalg.svd用法及代码示例
- Python numpy linalg.eigh用法及代码示例
- Python numpy linalg.tensorinv用法及代码示例
- Python numpy linalg.LinAlgError用法及代码示例
- Python numpy linalg.matrix_rank用法及代码示例
- Python numpy linalg.solve用法及代码示例
- Python numpy linalg.det用法及代码示例
- Python numpy linalg.cond用法及代码示例
- Python numpy linalg.inv用法及代码示例
- Python numpy linalg.eig用法及代码示例
- Python numpy linalg.lstsq用法及代码示例
- Python numpy linalg.norm用法及代码示例
- Python numpy linalg.slogdet用法及代码示例
- Python numpy linalg.multi_dot用法及代码示例
- Python numpy linalg.tensorsolve用法及代码示例
- Python numpy linalg.qr用法及代码示例
- Python numpy linalg.matrix_power用法及代码示例
- Python numpy linalg.cholesky用法及代码示例
- Python numpy linalg.eigvals用法及代码示例
- Python numpy linalg.eigvalsh用法及代码示例
- Python numpy linspace用法及代码示例
- Python numpy lib.NumpyVersion用法及代码示例
- Python numpy lib.Arrayterator用法及代码示例
- Python numpy legendre.legint用法及代码示例
- Python numpy laguerre.lagone用法及代码示例
注:本文由纯净天空筛选整理自numpy.org大神的英文原创作品 numpy.linalg.pinv。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。