1

の機能をエミュレートしようとしてnumpy.cumsum()いますが、値の累積二乗を取得する必要があります。

例: [1,2,3,4] の配列があります。

numpy.cumsum(array)を返すために使用できますarray([1,3,6,10])。私の目標は、値の累積二乗を取得するためにいくつかの高速なでこぼこのトリックを使用することです。

リストを使用する純粋な Python の場合:

>>> y = [1,2,3,4]
>>> sqVal = 0
>>> for val in y:
...     sqVal += val*val
...     print sqVal
... 
1
5
14
30

を試してみnumpy.cumprod()ましたが、これは累積積であり、値の累積二乗和ではありません。NumPy を使用したいという私の願望は、純粋に速度に基づいています。を使用cumsum()すると、 for ループを使用するよりも大幅に高速になります (これは理にかなっています)。

4

1 に答える 1

3

に加えてnumpy のsquare関数を使用しcumsumます。

In [1]: import numpy as np

In [2]: a = np.array([1,2,3,4])

In [3]: np.square(a)
Out[3]: array([ 1,  4,  9, 16])

In [4]: np.cumsum(np.square(a))
Out[4]: array([ 1,  5, 14, 30])
于 2012-09-04T15:33:42.007 に答える