numpy.cumulative_sum#

numpy.cumulative_sum(x, /, *, axis=None, dtype=None, out=None, include_initial=False)[源代码]#

计算给定轴上元素的累积和。

此函数是与 numpy.cumsum 兼容的 Array API 替代方案。

参数:
xarray_like

输入数组。

axisint, optional

计算累积和的轴。默认值 (None) 仅允许用于一维数组。对于多维数组,需要 axis

dtypedtype, optional

返回数组的类型以及求和元素的累加器的类型。如果未指定 dtype,则默认为 x 的 dtype,除非 x 的整数 dtype 的精度低于默认平台整数的精度。在这种情况下,将使用默认平台整数。

outndarray,可选

用于放置结果的替代输出数组。它必须具有与预期输出相同的形状和缓冲区长度,但必要时会进行类型转换。有关更多详细信息,请参阅 输出类型确定

include_initialbool, optional

一个布尔值,指示是否将初始值(零)包含在输出的第一个值中。使用 include_initial=True 时,输出的形状与输入的形状不同。默认值:False

返回:
cumulative_sum_along_axisndarray

除非指定了 out,否则将返回一个保存结果的新数组。在这种情况下,将返回 out 的引用。如果 include_initial=False,则结果的形状与 x 的形状相同。

另请参阅

sum

对数组元素求和。

trapezoid

使用复合梯形规则对数组值进行积分。

diff

沿给定轴计算 n 阶离散差值。

备注

使用整数类型时,算术运算是模运算,并且不会在溢出时引发错误。

cumulative_sum(a)[-1] 可能不等于 sum(a),对于浮点值,因为 sum 可能使用成对求和例程,从而减少舍入误差。有关更多信息,请参阅 sum

示例

>>> a = np.array([1, 2, 3, 4, 5, 6])
>>> a
array([1, 2, 3, 4, 5, 6])
>>> np.cumulative_sum(a)
array([ 1,  3,  6, 10, 15, 21])
>>> np.cumulative_sum(a, dtype=float)  # specifies type of output value(s)
array([  1.,   3.,   6.,  10.,  15.,  21.])
>>> b = np.array([[1, 2, 3], [4, 5, 6]])
>>> np.cumulative_sum(b,axis=0)  # sum over rows for each of the 3 columns
array([[1, 2, 3],
       [5, 7, 9]])
>>> np.cumulative_sum(b,axis=1)  # sum over columns for each of the 2 rows
array([[ 1,  3,  6],
       [ 4,  9, 15]])

cumulative_sum(c)[-1] 可能不等于 sum(c)

>>> c = np.array([1, 2e-9, 3e-9] * 1000000)
>>> np.cumulative_sum(c)[-1]
1000000.0050045159
>>> c.sum()
1000000.0050000029