NumPy参考 >例行程序 >Mathematical functions > numpy.sum
numpy.
sum
(a,axis = None,dtype = None,out = None,keepdims = <无值>,初始值= <无值>,其中= <无值> )[源] ¶给定轴上的数组元素的总和。
求和元素。
执行求和的一个或多个轴。默认值axis = None将对输入数组的所有元素求和。如果轴为负,则从最后一个到第一个轴计数。
1.7.0版中的新功能。
如果axis是int的元组,则对元组中指定的所有轴进行求和,而不是像以前那样单个轴或所有轴。
返回的数组和累加器的类型,元素在其中累加。的D型细胞一个默认使用,除非一个 具有比缺省平台整数精度以下的整数D型。在这种情况下,如果a是带符号的,则使用平台整数,而如果a是无符号的,则使用与平台整数具有相同精度的无符号整数。
放置结果的替代输出数组。它必须具有与预期输出相同的形状,但是如有必要,将强制转换输出值的类型。
如果将其设置为True,则缩小的轴将保留为尺寸1的尺寸。使用此选项,结果将针对输入数组正确广播。
如果传递了默认值,则keepdims不会传递给的sum
子类的方法
ndarray
,但是任何非默认值都将传递。如果子类的方法未实现keepdims,则将引发任何异常。
总和的起始值。有关reduce
详细信息,请参见。
1.15.0版中的新功能。
总和中要包括的元素。有关reduce
详细信息,请参见。
1.17.0版中的新功能。
具有相同形状的阵列一个,与所述指定的轴移除。如果a是0-d数组,或者如果axis是None,则返回标量。如果指定了输出数组,则返回对out的引用 。
笔记
使用整数类型时,算术是模块化的,并且在溢出时不会引发错误。
空数组的总和是中性元素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