numpy.sum#

numpy.sum(a, axis=None, dtype=None, out=None, keepdims=<no value>, initial=<no value>, where=<no value>)[源代码]#

在给定轴上对数组元素求和.

参数:
aarray_like

要相加的元素.

None 或 int 或 int 元组,可选

执行求和运算的轴或多个轴.默认情况下,axis=None 将对输入数组的所有元素求和.如果 axis 为负数,则从最后一个轴计数到第一个轴.如果 axis 是整数元组,则对元组中指定的所有轴执行求和,而不是像以前一样对单个轴或所有轴执行求和.

dtypedtype,可选

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

outndarray,可选

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

keepdimsbool,可选

如果设置为 True,则缩小的轴将保留在结果中,作为大小为 1 的维度.使用此选项,结果将针对输入数组正确广播.

如果传递了默认值,则不会将 keepdims 传递给 ndarray 子类的 sum 方法,但是任何非默认值都将传递.如果子类的方法未实现 keepdims ,则将引发任何异常.

initial标量,可选

总和的起始值.有关详细信息,请参见 reduce .

其中array_like of bool,可选

要包含在总和中的元素. 详情请参阅 reduce .

返回:
sum_along_axisndarray

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

参见

ndarray.sum

等效方法.

add

numpy.add.reduce 等效函数.

cumsum

数组元素的累积和.

trapezoid

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

mean , average

注释

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

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

>>> np.sum([])
0.0

对于浮点数,sum(和 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)
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)
np.int8(-128)

您也可以从一个非零值开始求和:

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