linalg.
pinv
计算矩阵的(摩尔-彭罗斯)伪逆矩阵。
利用奇异值分解(SVD)计算矩阵的广义逆,包括 大的 奇异值。
在 1.14 版更改: 现在可以在矩阵的堆栈上操作
要伪反转的矩阵或矩阵堆栈。
小奇异值的截止值。奇异值小于或等于 rcond * largest_singular_value 设置为零。对矩阵堆栈进行广播。
rcond * largest_singular_value
如果属实, a 假设为Hermitian(实值对称),从而可以更有效地找到奇异值。默认为false。
1.17.0 新版功能.
的伪逆 a .如果 a 是一个 matrix 例如,那么就是 B .
如果SVD计算不收敛。
参见
scipy.linalg.pinv
在SciPy中有类似的功能。
scipy.linalg.pinv2
SciPy中的类似函数(基于SVD)。
scipy.linalg.pinvh
计算厄米矩阵的(Moore-Penrose)伪逆。
笔记
矩阵A的伪逆矩阵,表示为 ,定义为:“求解的矩阵” [the least-squares problem] ,“即,如果 是说解决办法,那么 矩阵是这样的吗? .
可以证明,如果 是a的奇异值分解,那么 在哪里 是正交矩阵, 是一个对角线矩阵,由一个所谓的奇异值组成(后面通常是零),然后 只不过是由a的奇异值的倒数组成的对角矩阵(同样,后面跟零)。 [1]
工具书类
斯特朗 线性代数及其应用 ,第2版,佛罗里达州奥兰多,学术出版社,1980年,第139-142页。
实例
下面的示例检查 a * a+ * a == a 和 a+ * a * a+ == a+ :
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