Python scipy.sparse.linalg.eigs的工作速度比linalg.eigvals慢,即使对于大型矩阵也是如此
我在这里看到了关于scipy.sparse.linalg.eigs的静止状态,其工作速度比linalg.eigvals慢,但问题是存在小矩阵。在我的例子中,我有矩阵1000x1000,但linalg.eigvals的性能仍然比下面的代码好得多:Python scipy.sparse.linalg.eigs的工作速度比linalg.eigvals慢,即使对于大型矩阵也是如此,python,scipy,linear-algebra,eigenvalue,Python,Scipy,Linear Algebra,Eigenvalue,我在这里看到了关于scipy.sparse.linalg.eigs的静止状态,其工作速度比linalg.eigvals慢,但问题是存在小矩阵。在我的例子中,我有矩阵1000x1000,但linalg.eigvals的性能仍然比下面的代码好得多: import scipy as sp import scipy.sparse.linalg as lg N = 1000 m = sp.sparse.random(N, N, density=0.05).tocsc() a = m.A %timeit
import scipy as sp
import scipy.sparse.linalg as lg
N = 1000
m = sp.sparse.random(N, N, density=0.05).tocsc()
a = m.A
%timeit lg.eigs(m, k=500, return_eigenvectors=False, which='LR', tol = 0.0001)
%timeit sp.linalg.eigvals(a)
EIG的每个环路3.62 s±520 ms(7次运行的平均值±标准偏差,每个环路1次)
eigvals的每个循环1.68 s±420 ms(7次运行的平均值±标准偏差,每个循环1次)
我不明白怎么可能我不熟悉
scipy.sparse.linalg.eigs
中隐含重新启动的Arnoldi方法的局限性,但是一半的特征值似乎需要很多特征值。而且,5%的稀疏度可能不足以让基于稀疏度的优化产生效果。我不熟悉scipy.sparse.linalg.eigs
中隐含重新启动的Arnoldi方法的局限性,但一半的特征值似乎需要很多特征值。此外,对于基于稀疏性的优化来说,5%可能不够稀疏。