dask.array.sum

dask.array.sum

dask.array.sum(a, axis=None, dtype=None, keepdims=False, split_every=None, out=None)[源代码]

在给定轴上数组元素的总和。

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

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

参数
aarray_like

要相加的元素。

None 或 int 或 int 的元组,可选

执行求和操作的轴或轴。默认情况下,axis=None 将对输入数组的所有元素求和。如果轴为负数,则从最后一个轴开始计数到第一个轴。

1.7.0 新版功能.

如果 axis 是一个整数的元组,则会在元组中指定的所有轴上执行求和,而不是像之前那样只在一个轴或所有轴上执行。

dtypedtype, 可选

返回数组的类型以及累加器中元素求和的类型。默认情况下使用 a 的 dtype,除非 a 具有精度低于默认平台整数的整数 dtype。在这种情况下,如果 a 是有符号的,则使用平台整数;如果 a 是无符号的,则使用与平台整数精度相同的无符号整数。

ndarray,可选

可选的输出数组,用于放置结果。它必须与预期输出的形状相同,但如果需要,输出值的类型将被强制转换。

keepdimsbool, 可选

如果设置为True,被减少的轴将作为尺寸为1的维度保留在结果中。通过此选项,结果将正确地与输入数组进行广播。

如果传递了默认值,那么 keepdims 将不会传递给 ndarray 子类的 sum 方法,然而任何非默认值都会被传递。如果子类的方法没有实现 keepdims,任何异常都会被引发。

初始标量,可选 (Dask 中不支持)

求和的起始值。详情请参见 ~numpy.ufunc.reduce

1.15.0 新版功能.

哪里array_like 的布尔值,可选 (Dask 不支持)

要包含在总和中的元素。详情请参见 ~numpy.ufunc.reduce

1.17.0 新版功能.

返回
沿轴求和ndarray

一个与 a 形状相同的数组,但指定的轴被移除。如果 a 是一个 0-d 数组,或者 axis 是 None,则返回一个标量。如果指定了输出数组,则返回对 out 的引用。

参见

ndarray.sum

等效方法。

add

numpy.add.reduce 等效函数。

cumsum

数组元素的累计和。

trapezoid

使用复合梯形法则集成数组值。

mean, average

注释

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

空数组的和是中性元素 0:

>>> np.sum([])  
0.0

对于浮点数,求和(以及 np.add.reduce)的数值精度通常受限于直接将每个数逐个加到结果中,这会在每一步导致舍入误差。然而,通常numpy会使用一种数值上更好的方法(部分成对求和),从而在许多用例中提高精度。当没有给出 axis 时,这种提高的精度总是提供的。当给出 axis 时,精度将取决于求和的轴。从技术上讲,为了提供尽可能快的速度,只有在沿内存中的快速轴求和时才会使用提高的精度。请注意,精确的精度可能会根据其他参数而变化。与NumPy相比,Python的 math.fsum 函数使用了一种较慢但更精确的求和方法。特别是在对大量低精度浮点数(如 float32)求和时,数值误差可能会变得显著。在这种情况下,建议使用 dtype=”float64” 以使用更高的精度进行输出。

示例

>>> import numpy as np  
>>> np.sum([0.5, 1.5])  
2.0
>>> np.sum([0.5, 0.7, 0.2, 1.5], dtype=np.int32)  
1
>>> np.sum([[0, 1], [0, 5]])  
6
>>> np.sum([[0, 1], [0, 5]], axis=0)  
array([0, 6])
>>> np.sum([[0, 1], [0, 5]], axis=1)  
array([1, 5])
>>> np.sum([[0, 1], [np.nan, 5]], where=[False, True], axis=1)  
array([1., 5.])

如果累加器太小,会发生溢出:

>>> np.ones(128, dtype=np.int8).sum(dtype=np.int8)  
-128

你也可以从非零值开始求和:

>>> np.sum([10], initial=5)  
15