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 的引用。
笔记
使用整数类型时,算术是模块化的,并且溢出时不会引发错误。
空数组的和是中性元素 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