nが素数の場合はTrueを返し、それ以外の場合はFalseを返す関数is_prime(n)があります。NumPy では、配列に素数が含まれているかどうかを確認してループしています。配列の先頭は反復ごとに同じになるため、多くの不要な計算を避けるためにis_prime(n)関数をメモ化したいと考えています。
配列があるので、 is_prime(n)をベクトル化したいので、要素ごとに NumPy スタイルの配列に適用できます。NumPy チュートリアル (後で表示) の 1 行でこれを行います。
ネットで見つけたメモ化テンプレートも使用します。
def memoize(function):
cache = {}
def decorated_function(*args):
if args in cache:
return cache[args]
else:
val = function(*args)
cache[args] = val
return val
return decorated_function
それで:
is_prime = memoize(is_prime)
しかし、メモ化された is_prime関数をベクトル化すると、 V_primeは正しくメモ化されるようになりましたか?:
V_prime = np.vectorize(is_prime)
ありがとうございました