[英]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.