[英]Fastest way to compute a subset of columns of the pseudoinverse of a scipy.sparse matrix
我正在尋找計算稀疏矩陣A
的偽逆的列子集的最佳方法。 以下是一些相關事實:
A
是一個稀疏的NxN
矩陣,它有一個已知特征向量的零特征值
我只需要偽逆的M < N/2
列
偽逆是一個稠密矩陣
我目前正在使用scipy.linalg.lstsq(A,Id)
(其中Id
是NxN
單位矩陣的NxM
子矩陣),但我懷疑有更好的方法來做到這一點。
任何建議將不勝感激。
更新:由於只有一個零特征值,結果證明創建可逆增廣(N+1)x(N+1)
矩陣並使用scipy.linalg.solve
。 然而,這仍然沒有利用A
的稀疏性。
您正在尋找scipy.sparse.linalg.svds
,它將“為稀疏矩陣計算最大的k
奇異值/向量”(盡管這有點誤導,因為它也會為密集矩陣這樣做!)。
它使用流行的 Fortran77 包 ARPACK 中實現的Arnoldi 迭代,而后者又在大多數數學系統(Matlab、R 等)中具有包裝器。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.