dask.array.cumsum

dask.array.cumsum

dask.array.cumsum(x, axis=None, dtype=None, out=None, method='sequential')[源代码]

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

此文档字符串是从 numpy.cumsum 复制的。

Dask 版本可能存在一些不一致性。

Dask 添加了一个额外的仅关键字参数 method

方法{‘sequential’, ‘blelloch’}, 可选

选择使用哪种方法来执行 cumsum。默认是 ‘sequential’。

  • ‘sequential’ 在当前块之前对每个先前的块执行累积和。

  • ‘blelloch’ 是一种工作效率高的并行累加和算法。它通过首先计算每个块的和,然后通过二叉树组合这些和来暴露并行性。这种方法的速度或内存效率可能取决于工作负载、调度器和硬件。需要更多的基准测试。

参数
aarray_like (Dask 中不支持)

输入数组。

int, 可选

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

dtypedtype, 可选

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

ndarray,可选

可选的输出数组,用于放置结果。它必须与预期输出的形状和缓冲区长度相同,但如果需要,类型将被强制转换。更多详情请参见 Output type determination

返回
沿轴的累积和ndarray.

除非指定了 out ,否则将返回一个包含结果的新数组,在这种情况下,将返回对 out 的引用。结果的大小与 a 相同,如果 axis 不是 None 或者 a 是一个一维数组,则结果的形状与 a 相同。

参见

cumulative_sum

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

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