我想使用 Python 2.6.5 计算大型矩阵(约 1000x1000)的特征值。我一直没能这么快。我还没有找到任何其他线程来解决这个问题。
当我跑
a = rand(1000,1000);
tic;
for i =1:10
eig(a);
end
toc;
在 MATLAB 中大约需要 30 秒。Python 中的类似测试需要 216 秒。使用 RPy 通过 R 运行它并没有明显加快计算速度。Octave 的测试耗时 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 很陌生,所以我可能做了一些愚蠢的事情。如果我需要提供更多信息,请告诉我。