裏 RjpWiki

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

range() と numpy.range() -- Python

2020年12月23日 | Python

range と numpy.arange は速度が大違い。numpy.range を使うべし。

import numpy as np

def Eratosthenes(n):
    """ n 以下の素数をエラトステネスの篩で生成 """
    tbl = np.arange(n+1, dtype=int)
    tbl[1] = 0
    for i in range(2, int( np.sqrt(n))+1):
        if tbl[i]:
            tbl[range(2*i, n+1, i)] = 0
    return tbl[tbl > 0]

def Eratosthenes2(n):
    """ n 以下の素数をエラトステネスの篩で生成 """
    tbl = np.arange(n+1, dtype=int)
    tbl[1] = 0
    for i in range(2, int(np.sqrt(n))+1):
        if tbl[i]:
            tbl[np.arange(2*i, n+1, i)] = 0
    return tbl[tbl > 0]

from time import time as t
s = t();a = Eratosthenes(10000000);print(t()-s) # 4.958sec
s = t();b = Eratosthenes2(10000000);print(t()-s) # 0.268sec

な,な,なんと!18 倍も違う。

コメント    この記事についてブログを書く
  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする
« 演算の意味をよく考えて,簡... | トップ | 三次元空間における2つのベク... »
最新の画像もっと見る

コメントを投稿

Python」カテゴリの最新記事