裏 RjpWiki

Julia ときどき R, Python によるコンピュータプログラム,コンピュータ・サイエンス,統計学

Python で平均値? でも,R より遅い

2017年11月19日 | ブログラミング

1 から 10000000 までの整数の平均値

Python3

>>> import time; import statistics; start=time.time();statistics.mean(list(range(1,10000001)));print(time.time()-start)
5000000.5
9.593008995056152 # 9 秒もかかる?

>>> import time; import numpy; start=time.time();numpy.mean(list(range(1,10000001)));print(time.time()-start)
5000000.5
1.1983740329742432 # numpy でも 1 秒

R

> optons(digits=16)
> system.time(print(mean(1:10000000)))

[1] 5000000.5
             ユーザ             システム                 経過  
0.016000000000005343 0.008000000000002672 0.023999999999887223  # 0.02 秒以下なんだが

コメント (1)    この記事についてブログを書く
  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする
« Python で素因数分解 --- R ... | トップ | 崩れないように積み上げて! »
最新の画像もっと見る

1 コメント

コメント日が  古い順  |   新しい順
Unknown (とおりすがり)
2017-11-20 19:07:33
pythonは標準ではRで言うlistで配列を扱うので, 標準では速度的に不利です。それをRと同じようにベクトル(配列)で扱えるようにするのがnumpyですので,
numpy.mean(numpy.arange(1,10000000))
みたいにして比較するなら良いかと思います。
上記のpythonの例だと, Rで言うなれば x<-as.list(1:10000000) としてから, mean(unlist(x))としているのとにたような比較になってしまっています。
# つまりリスト処理のオーバーヘッドの計測をしてしまっている.
返信する

コメントを投稿

ブログラミング」カテゴリの最新記事