Я хотел бы вычислить собственные значения матриц большого размера (около 1000x1000), используя Python 2.6.5.Я не смог сделать это быстро.Я не нашел других потоков, посвященных этому вопросу.
Когда я запускаю
a = rand(1000,1000);
tic;
for i =1:10
eig(a);
end
toc;
в MATLAB, это занимает около 30 секунд.Подобный тест в Python требует 216 секунд.Выполнение его через R с использованием RPy не значительно ускорило вычисления.Тест в Октаве занял 93 секунды.Я немного озадачен разницей в скорости.
Единственный пример такого вопроса, который я могу найти в Интернете, это this , которому несколько лет.Постер в этом вопросе имеет другую структуру каталогов Python (которую я приписываю возрасту поста, хотя могу ошибаться), поэтому я не был достаточно уверен в том, чтобы пытаться следовать инструкциям, опубликованным корреспондентом.
Мой менеджер пакетов говорит, что у меня установлен LAPACK, и я использую NumPy и SciPy для вычислений Python:
from numpy import *
from scipy import *
from numpy.linalg import *
import time
a = randn(1000,1000)
tic = time.clock()
for i in range(0,10):
eig(a)
toc = time.clock()
print "Elapsed time is ", toc-tic
Я довольно плохо знаком с Python, поэтому, возможно, сделал что-то глупое.Пожалуйста, дайте мне знать, если мне нужно предоставить дополнительную информацию.