当前位置: 首页>>代码示例 >>用法及示例精选 >>正文


Python numpy sum用法及代码示例


本文简要介绍 python 语言中 numpy.sum 的用法。

用法:

numpy.sum(a, axis=None, dtype=None, out=None, keepdims=<no value>, initial=<no value>, where=<no value>)

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

参数

a array_like

要总结的元素。

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

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

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

dtype dtype,可选

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

out ndarray,可选

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

keepdims 布尔型,可选

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

如果传递了默认值,那么保持昏暗不会被传递到sum子类的方法numpy.ndarray,但是任何非默认值都是。如果sub-class' 方法没有实现保持昏暗将引发任何异常。

initial 标量,可选

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

where 类似于 bool 的数组,可选

要包含在总和中的元素。有关详细信息,请参阅 reduce

返回

sum_along_axis ndarray

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

注意

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

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

>>> np.sum([])
0.0

对于浮点数,sum 的数值精度(和np.add.reduce) 通常通过直接将每个数字单独添加到结果中来限制,从而导致每一步的舍入错误。但是,numpy 通常会使用数值更好的方法(部分成对求和),从而提高许多use-cases 的精度。这种改进的精度总是在没有时提供axis给出。什么时候axis给定,这将取决于求和的轴。从技术上讲,为了提供尽可能最佳的速度,只有当求和沿着内存中的快轴时才使用改进的精度。请注意,确切的精度可能会因其他参数而异。与 NumPy 相比,Pythonmath.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

相关用法


注:本文由纯净天空筛选整理自numpy.org大神的英文原创作品 numpy.sum。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。