numpy.cumsum#

numpy.cumsum(a, axis=None, dtype=None, out=None)[源代码]#

返回给定轴上元素的累积和。

参数:
aarray_like

输入数组。

axisint,可选

计算累积和的轴。默认值 (None) 是计算展平数组的累积和。

dtypedtype,可选

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

outndarray,可选

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

返回:
cumsum_along_axisndarray.

除非指定了 out,否则返回一个包含结果的新数组;如果指定了 out,则返回对 out 的引用。结果与 a 具有相同的大小,如果 axis 不为 None 或 a 是一维数组,则与 a 具有相同的形状。

另请参阅

cumulative_sum

适用于数组 API 的 cumsum 兼容替代方案。

sum

数组元素求和。

trapezoid

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

diff

计算给定轴上的第 n 阶离散差分。

注意事项

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

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

示例

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

cumsum(b)[-1] 可能不等于 sum(b)

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