上一主题

numpy.ufunc.reduce

下一主题

numpy.ufunc.reduceat

numpy.ufunc.accumulate

ufunc.accumulate(array, axis=0, dtype=None, out=None)

累加将运算符应用于所有元素的结果。

对于一维数组,accumulate产生的结果等效于:

r = np.empty(len(A))
t = op.identity        # op = the ufunc being applied to A's  elements
for i in range(len(A)):
    t = op(t, A[i])
    r[i] = t
return r

例如,add.accumulate()等效于np.cumsum()。

对于多维数组,只沿一个轴应用累加(默认为轴零;参见下面的示例),因此如果想要在多个轴上累积,则需要重复使用。

参数:

数组:array_like

要执行的数组。

axis:int,可选

沿其应用积累的轴;默认为零。

dtype:数据类型代码,可选

数据类型用于表示中间结果。默认为输出数组的数据类型(如果提供)或输入数组的数据类型(如果未提供输出数组)。

out:ndarray,可选

存储结果的位置。如果未提供,则返回新分配的数组。

返回:

r:ndarray

累加值。如果提供out,则r是对out的引用。

例子

1-D数组示例:

>>> np.add.accumulate([2, 3, 5])
array([ 2,  5, 10])
>>> np.multiply.accumulate([2, 3, 5])
array([ 2,  6, 30])

2-D数组示例:

>>> I = np.eye(2)
>>> I
array([[ 1.,  0.],
       [ 0.,  1.]])

沿轴0(行),向下列累积:

>>> np.add.accumulate(I, 0)
array([[ 1.,  0.],
       [ 1.,  1.]])
>>> np.add.accumulate(I) # no axis specified = axis zero
array([[ 1.,  0.],
       [ 1.,  1.]])

沿轴1(列),通过行累积:

>>> np.add.accumulate(I, 1)
array([[ 1.,  1.],
       [ 0.,  1.]])