numpy.sum #

麻木的。sum ( a , axis=None , dtype=None , out=None , keepdims=<无 值> , initial=<无 值> , where=<无 值> ) [来源] #

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

参数
类似数组

要求和的元素。

axis无或整数或整数元组,可选

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

1.7.0 版本中的新增内容。

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

数据类型数据类型,可选

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

输出ndarray,可选

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

keepdims布尔值,可选

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

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

初始标量,可选

总和的起始值。reduce详情请参阅。

1.15.0 版本中的新增功能。

其中array_like of bool,可选

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

1.17.0 版本中的新增功能。

返回
sum_along_axis ndarray

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

也可以看看

ndarray.sum

等效方法。

add.reduce

的等效功能add

cumsum

数组元素的累积和。

trapz

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

mean,average

笔记

使用整数类型时,算术是模块化的,并且溢出时不会引发错误。

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

>>> np.sum([])
0.0

对于浮点数,sum(和 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