Numpy 1d Array CumSquare的值

时间:2012-09-04 15:26:39

标签: python optimization numpy multidimensional-array cumsum

我希望模仿numpy.cumsum()的功能,除了我需要捕获值的累积平方。

例如:我有一个[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()比使用for循环要快得多(这很有意义)。

1 个答案:

答案 0 :(得分:3)

除了square之外,还使用numpy的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])