numpy.sum

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

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

参数
aarray_like

要求和的元素。

axis无、int或int的元组,可选

执行求和的轴。默认值axis=none将对输入数组的所有元素求和。如果轴为负,则从最后一个轴到第一个轴计数。

1.7.0 新版功能.

如果轴是整数的元组,则对元组中指定的所有轴执行求和,而不是像以前那样对单个轴或所有轴执行求和。

dtype可选类型

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

outndarray,可选

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

keepdims可选的布尔

如果设置为“真”,则缩小的轴将保留在结果中,作为尺寸为1的尺寸。使用此选项,结果将针对输入数组正确广播。

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

initial标量,可选

总和的起始值。见 reduce 有关详细信息。

1.15.0 新版功能.

where数组类似bool,可选

要包含在总和中的元素。看到了吗 reduce 有关详细信息。

1.17.0 新版功能.

返回
sum_along_axis恩达雷

形状与相同的数组 a ,删除指定的轴。如果 a 是一个0-D数组,或者如果 axis 如果为“无”,则返回一个标量。如果指定了输出数组,则引用 out 返回。

参见

ndarray.sum

等效方法。

add.reduce

的等效功能 add .

cumsum

数组元素的累积和。

trapz

使用复合梯形规则整合数组值。

mean, average

笔记

使用整数类型时,算术是模块化的,溢出时不会产生错误。

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

>>> np.sum([])
0.0

对于浮点数,和(和)的数值精度 np.add.reduce )通常,通过直接将每个数字单独添加到结果中来进行限制,从而导致每个步骤中的舍入错误。然而,numpy通常会使用数值上更好的方法(部分成对求和),从而在许多用例中提高精度。当没有 axis 是给定的。什么时候? axis 它将取决于求和的轴。从技术上讲,为了尽可能提供最佳的速度,只有在内存中沿着快轴求和时才使用改进的精度。请注意,精确精度可能因其他参数而异。与NumPy相比,Python的 math.fsum 函数使用较慢但更精确的求和方法。尤其是对大量低精度浮点数求和时,如 float32 ,数值误差会变得很大。在这种情况下,建议使用 dtype="float64" 对输出使用更高的精度。

实例

>>> 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