當前位置: 首頁>>編程示例 >>用法及示例精選 >>正文


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