我正在使用scipy.sparse.linalg.eigsh来解决一个非常稀疏的矩阵的广义特征值问题,并遇到了内存问题。该矩阵是一个具有100万行/列的方阵,但每行只有大约25个非零条目。是否有一种方法可以解决问题,而无需将整个矩阵读入内存,即只在内存中处理矩阵块?
如果解决方案涉及使用Python或Java中的其他库,则可以接受。
如果解决方案涉及使用Python或Java中的其他库,则可以接受。
from scipy.sparse.linalg import LinearOperator
def my_matvec(x):
y = compute matrix-vector product A x
return y
A = LinearOperator(matvec=my_matvec, shape=(1000000, 1000000))
scipy.sparse.linalg.eigsh(A)
请查看scipy.sparse.linalg.eigsh文档以了解广义特征值问题所需的内容。
Scipy ARPACK接口几乎暴露了完整的ARPACK接口,因此我怀疑您通过切换到FORTRAN或其他访问Arpack的方式不会获得太多好处。