numpy
pythonで数値計算という無謀なことを試している。
numpyパッケージを利用すると、arrayでお手軽に計算できるのがよい。でも遅い。
とはいえ、psycoというリアルタイムコンパイラ?的なもの出てきている。どーしても速くしたい部分だけCで書くことも可能だ。案外いけるんじゃないかと思う。実際、こんなかんじで使ってる研究者を時々見かける。
自分用メモ。
numpyのaverage()は遅い。sum()とsize*1を使って計算する方が倍くらい速い。なんでだろ。とりあえず「average()は使うな!」ということにしておく。(arrayサイズが小さいせいかもしれない。)
追記
こんなコードを書いて、profileで計ってみた。
from numpy import * def test_average(): x = arange(10000.0) for i in xrange(10000): average(x) def test_non_average(): x = arange(10000.0) for i in xrange(10000): sum(x)/x.size
こういう結果に(Athlon64 3700+)。
- average()使用: 1.67秒
- sum(), sizeで代用: 0.98秒
後者も十分たるそうな操作なのに有意差がでた。numpy1.0b4にて。
これCだとどれくらいになるんだろ。
*1:ちなみに len()よりsizeのほうが微妙に速い気がする