とりあえず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入れてくれるんなら初心者はこれを使った方がいいな(アカデミック版あり