私はそれを累積製品に変換したい1-Dのnumpy配列を持っています。しかし、これはarr
のサイズが非常に大きくなったときに遅く得ることができますNumpyまたはScipyを使用した累積製品
import numpy as np
arr = [1,2,3,4,5,6,7,8,9,10]
c_sum = [np.prod(arr[:i]) for i in range(1, len(arr) + 1)]
# c_sum = [1, 2, 6, 24, 120, 720, 5040, 40320, 362880, 3628800]
:素朴な実装はこのことでしょう。私は、Numpy
またはScipy
の配列魔法のいずれかを使って、より効率的な方法があると思います。誰かが私にそれをする方法を示すことができますか?
:[ドキュメント](HTTPS://docs.scipyあなたは最初からこれを行う方法を希望した場合.org/doc/numpy/reference/generated/numpy.cumprod.html)。 – BrenBarn
うわー、私はとても恥ずかしく感じます。私はいくつかの他のキーワードを使ってgoogledして、事を見つけることができませんでした。どうもありがとうございました! –
このアプローチは、それぞれの反復で 'arr'の**スライス**をとっているため、*スライスの積をとって*コピー*するので、あまりスケーリングができません。注意、頻繁にあなた自身を繰り返しています。 forループと 'arr.append'を使用した素朴な実装でさえ、より高速でスケールがはるかに優れています。 –