scipy.sparse.linalg.eigs работает медленнее, чем linalg.eigvals даже для больших матриц - PullRequest
1 голос
/ 09 ноября 2019

Я видел здесь вопрос о 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

Я не могу понять, как это возможно

...