我想用Python 2.6.5來計算大型矩陣(大約1000x1000)的特徵值。我一直無法做到這一點。我還沒有發現任何其他線程來解決這個問題。Python特徵值計算在我的計算機上比MATLAB的運行速度慢得多。爲什麼?
當我在MATLAB中運行
a = rand(1000,1000);
tic;
for i =1:10
eig(a);
end
toc;
大約需要30秒。 Python中的類似測試需要216秒。使用RPy通過R運行它並沒有顯着加速計算。八度測試花了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,所以我可能做了一些愚蠢的。如果我需要提供更多信息,請告訴我。
您是否在Python和Matlab中使用相同的精度? – 2011-05-18 22:19:59
您確實需要確保您的Python代碼中的縮進是完全正確的。你的例子不能像寫入那樣運行。 – 2011-05-18 22:22:17
爲了讓你知道你應該使用'rand'(均勻分佈)或'randn'(正態分佈),但不要混合它們。這並沒有解釋不同之處。 – Wok 2011-05-18 22:36:00