本文簡要介紹 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。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。