Я видел здесь вопрос о 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 lg.eigs(m, k=500, return_eigenvectors=False, which='LR', tol = 0.0001)
%timeit sp.linalg.eigvals(a)
3,62 с ± 520 мс на цикл (среднее ± стандартное отклонение из 7 прогонов, 1цикл каждый) Для eigs
1,68 с ± 420 мс на цикл (среднее ± стандартное отклонение из 7 циклов, по 1 циклу каждый) Для eigvals
Я не могу понять, как это возможно