2012-09-04 100 views
1

我在尋找模擬numpy.cumsum()的功能,除了我需要捕獲值的累積平方。Numpy 1d數組CumSquare的值

例如:我有一個[1,2,3,4]的數組。

我可以使用numpy.cumsum(array)返回array([1,3,6,10])。我的目標是使用一些快速的numpy技巧來獲取值的累積平方。

在純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()比使用循環要快得多(這很有意義)。

回答

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])