Py

とりあえずPythonで行列の演算 〜MATLABとどっちがはやいかな?〜

何度もすいません
ちょっと舞い上がったので更新します

MATLABと比較しました(そんだけですけど

%MATLAB
num=1000;
A=rand(num);
B=rand(num);

%行列の積
tic;
M=A*B;
t=toc;
fprintf('行列積 %dx%d: %.3f\n',num,num,t);

%逆行列
tic;
M=inv(M);
t=toc;
fprintf('逆行列 %dx%d: %.3f\n',num,num,t);

実行結果

行列積 1000x1000: 0.969
逆行列 1000x1000: 1.109

Pythonでは

#!/usr/bin/env python
# -*- coding: utf-8 -*-
from numpy import *
from scipy import *
from pylab import *
import time

num=1000

A=rand(num,num)
B=rand(num,num)

A=matrix(A)
B=matrix(B)

#行列の積
start = time.clock()
M = A*B
end = time.clock()
print "行列積 %dx%d: %.3f" % (num, num, end - start)

#逆行列
start = time.clock()
M = linalg.inv(M)
end = time.clock()
print "逆行列 %dx%d: %.3f" % (num, num, end - start)

実行結果

行列積 1000x1000: 0.334
逆行列 1000x1000: 0.610

Pythonの方が2〜3倍速い!!(ちなみに昨日の結果より早いのはPCの違いです。
うれしすぎる!
(ただお互い別々に乱数を発生させて行列を作ってるので厳密な比較にはなっていない



追記(はやすぎないか?)
このPCはなぜかATLASが適応されてるみたいだ・・・(ちっ、そのせいか
こっちはEnthought Python DistributionていうPythonの他にいろいろ一緒にインストールしてくれるパッケージを使ったからかな?勝手にATLAS入れてくれるんなら初心者はこれを使った方がいいな(アカデミック版あり