本文簡要介紹 python 語言中 numpy.linalg.matrix_rank
的用法。
用法:
linalg.matrix_rank(A, tol=None, hermitian=False)
使用 SVD 方法返回數組的矩陣秩
數組的秩是數組中大於 tol 的奇異值的數量。
- A: {(M,), (…, M, N)} 數組
輸入向量或矩陣堆棧。
- tol: (…)數組,浮點數,可選
低於該閾值的 SVD 值被視為零。如果tol是無,並且
S
是一個具有奇異值的數組M, 和eps
是數據類型的 epsilon 值S
, 然後tol被設定為S.max() * max(M, N) * eps
.- hermitian: 布爾型,可選
如果為真,則 A 被假定為 Hermitian(如果為實值則對稱),從而可以使用更有效的方法來查找奇異值。默認為 False。
- rank: (…)數組
A級。
參數:
返回:
注意:
檢測排名缺陷的默認閾值是對奇異值大小的測試A。默認情況下,我們識別小於的奇異值
S.max() * max(M, N) * eps
表示等級不足(使用上麵定義的符號)。這是 MATLAB 使用的算法 [1]。它也出現在數字食譜在討論線性最小二乘的 SVD 解決方案 [2]。此默認閾值旨在檢測考慮 SVD 計算數值錯誤的排名缺陷。想象一下 A 中的一列是 A 中其他列的精確(浮點)線性組合。計算 A 上的 SVD 通常不會產生完全等於 0 的奇異值:最小 SVD 值的任何差異從 0 開始是由於 SVD 計算中的數值不精確造成的。我們針對小 SVD 值的閾值考慮了這種數值不精確性,默認閾值將檢測這種數值排名缺陷。即使 A 的某些列的線性組合不完全等於 A 的另一列,而隻是在數值上非常接近 A 的另一列,閾值也可以聲明矩陣 A 秩不足。
我們選擇默認閾值是因為它被廣泛使用。其他閾值也是可能的。例如,2007 年版的其他地方數字食譜還有一個替代閾值
S.max() * np.finfo(A.dtype).eps / 2. * np.sqrt(m + n + 1.)
.作者將此閾值說明為基於“expected roundoff error”(第 71 頁)。上述閾值處理 SVD 計算中的浮點舍入誤差。但是,您可能有更多關於 A 中錯誤來源的信息,這將使您考慮使用其他容差值來檢測有效秩不足。最有用的公差度量取決於您打算在矩陣上使用的操作。例如,如果您的數據來自不確定性大於浮點 epsilon 的不確定性測量,則選擇接近該不確定性的容差可能更可取。如果不確定性是絕對的而不是相對的,則容差可能是絕對的。
參考:
MATLAB 參考文檔,“Rank”https://www.mathworks.com/help/techdoc/ref/rank.html
W. H. Press、S. A. Teukolsky、W. T. Vetterling 和 B. P. Flannery,“數值食譜(第 3 版)”,劍橋大學出版社,2007 年,第 795 頁。
1:
2:
例子:
>>> from numpy.linalg import matrix_rank >>> matrix_rank(np.eye(4)) # Full rank matrix 4 >>> I=np.eye(4); I[-1,-1] = 0. # rank deficient matrix >>> matrix_rank(I) 3 >>> matrix_rank(np.ones((4,))) # 1 dimension - rank 1 unless all 0 1 >>> matrix_rank(np.zeros((4,))) 0
相關用法
- Python numpy linalg.matrix_power用法及代碼示例
- Python numpy linalg.multi_dot用法及代碼示例
- Python numpy linalg.svd用法及代碼示例
- Python numpy linalg.pinv用法及代碼示例
- Python numpy linalg.eigh用法及代碼示例
- Python numpy linalg.tensorinv用法及代碼示例
- Python numpy linalg.LinAlgError用法及代碼示例
- 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.tensorsolve用法及代碼示例
- Python numpy linalg.qr用法及代碼示例
- 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.matrix_rank。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。