簡體   English   中英

計算 scipy.sparse 矩陣的偽逆的列子集的最快方法

[英]Fastest way to compute a subset of columns of the pseudoinverse of a scipy.sparse matrix

我正在尋找計算稀疏矩陣A的偽逆的列子集的最佳方法。 以下是一些相關事實:

  1. A是一個稀疏的NxN矩陣,它有一個已知特征向量的零特征值

  2. 我只需要偽逆的M < N/2

  3. 偽逆是一個稠密矩陣

我目前正在使用scipy.linalg.lstsq(A,Id) (其中IdNxN單位矩陣的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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM