我想用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