裏 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 の勝ちかな?

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

Python で素因数分解

http://my-notes.hatenablog.com/entry/2017/11/19/022246

結果の表示が特殊

sympy がインストールされていない場合は,事前に一度だけ
$ python3 -m pip install sympy

その後,
$ python3
>>> import sympy as sym
>>> sym.factorint(12878)
{2: 1, 47: 1, 137: 1}

>>> sym.factorint(111111111111111111111111111111111111111111111111111111111111111)
{3: 2, 37: 1, 43: 1, 239: 1, 1933: 1, 4649: 1, 10837: 1, 23311: 1, 45613: 1, 333667: 1, 45121231: 1, 10838689: 1, 1921436048294281: 1}

>>> start=time.time();sym.factorint(11111111111111111111111111111111111111111111111111111111111111111111);print(time.time()-start)
{11: 1, 101: 1, 103: 1, 4013: 1, 2071723: 1, 28559389: 1, 1491383821: 1, 5363222357: 1, 21993833369: 1, 2324557465671829: 1}

1.9484901428222656 # 1.9 秒かかりました


R で素因数分解

gmp がインストールされていない場合は,事前に一度だけ
> install.packages("gmp")

gmp を使う前に
> library(gmp)

その後,
> factorize(12878)
Big Integer ('bigz') object of length 3:
[1] 2   47  137

> factorize(as.bigz("111111111111111111111111111111111111111111111111111111111111111"))
Big Integer ('bigz') object of length 14:
 [1] 3                3                37               43               239              1933             4649            
 [8] 10837            23311            45613            333667           45121231         10838689         1921436048294281

> system.time(print(factorize(as.bigz("11111111111111111111111111111111111111111111111111111111111111111111"))))
Big Integer ('bigz') object of length 10:
 [1] 11               101              103              4013             2071723          28559389         1491383821      
 [8] 5363222357       21993833369      2324557465671829

   ユーザ   システム       経過  
      0.03       0.00       0.03 # 0.03秒でした




 

コメント
  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする

PVアクセスランキング にほんブログ村

PVアクセスランキング にほんブログ村