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().

对于多维数组,accumulate 仅沿一个轴应用(默认情况下为轴零;请参见下面的示例),因此如果希望沿多个轴累积,则需要重复使用.

参数:
arrayarray_like

要操作的数组.

axisint, 可选

要沿其应用累积的轴;默认值为零.

dtype数据类型代码,可选

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

outndarray, None, 或 ndarray 和 None 的元组, 可选

存储结果的位置.如果没有提供或为 None,则返回一个新分配的数组.为了与 ufunc.__call__ 保持一致,如果作为关键字提供,这可能会被包装在一个 1 元素的元组中.

在 1.13.0 版本发生变更: 元组允许作为关键字参数.

返回:
rndarray

累积的值.如果提供了 out,`r` 是对 out 的引用.

示例

一维数组示例:

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

二维数组示例:

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