NumPy sum() 函数用于计算给定轴上数组元素的总和。该函数默认计算数组中存在的所有元素的总和,否则计算指定轴上的所有元素的总和。
语法
numpy.sum(a, axis=None, dtype=None,
out=None, keepdims=<no value>,
initial=<no value>, where=<no value>)
参数
a | 必填。 指定一个包含要求和的数字的数组。 |
axis | 可选。 指定计算总和所沿的一个或多个轴。默认值 axis=None 将对输入数组的所有元素求和。如果 axis 为负数,则从最后一个轴到第一个轴计数。 |
dtype | 可选。 指定返回数组的数据类型。默认情况下使用 a 的数据类型,除非 a 的整数数据类型的精度低于默认平台整数。 |
out | 可选。 指定结果的输出数组。默认值为"无"。如果提供,它必须具有与输出相同的形状。 |
keepdims | 可选。 如果将此设置为 True,则缩小的轴将作为大小为 1 的维度保留在结果中。使用此选项,结果将针对输入数组正确广播。使用默认值时,keepdims 不会传递给 ndarray 子类的 sum 方法,但任何非默认值都会传递给 ndarray 子类的 sum 方法。如果子类方法没有实现keepdims,则会引发异常。 |
initial | 可选。 指定总和的起始值。 |
where | 可选。 指定一个 bool 数组,以指定求和中包含哪个元素。 |
返回值
返回一个数组具有与 a 相同的形状,但删除了指定的轴。如果 a 是 0 维数组,或者 axis 为 None,则返回标量。如果指定了输出数组,则返回对 out 的引用。
示例:所有值的总和
在下面的示例中,sum() 函数用于计算数组中存在的所有值的总和。
import numpy as np
Arr = np.array([[10,20],[30, 40]])
print("Array 为:")
print(Arr)
#所有值的总和
print("\n所有值的总和", np.sum(Arr))
上述代码的输出将是:
Array 为:
[[10 20]
[30 40]]
所有值的总和 100
示例:带有 axis 参数的 sum()
当提供轴参数时,将在指定轴上计算总和。考虑以下示例。
import numpy as np
Arr = np.array([[10,20,30],[70,80,90]])
print("Array 为:")
print(Arr)
#沿轴求和=0
print("\n沿轴求和=0")
print(np.sum(Arr, axis=0))
#沿轴求和=1
print("\n沿轴求和=1")
print(np.sum(Arr, axis=1))
上述代码的输出将是:
Array 为:
[[10 20 30]
[70 80 90]]
沿轴求和=0
[ 80 100 120]
沿轴求和=1
[ 60 240]
示例:带有 dtype 参数的 sum()
可以提供 dtype 参数来获取所需数据类型的结果。
import numpy as np
Arr = np.array([[10,20],[80,90]])
print("Array 为:")
print(Arr)
#沿轴求和=0,dtype=complex
print("\n沿轴求和=0 (dtype=complex)")
print(np.sum(Arr, axis=0, dtype=complex))
上述代码的输出将是:
Array 为:
[[10 20]
[80 90]]
沿轴求和=0 (dtype=complex)
[ 90.+0.j 110.+0.j]
示例: sum() 与初始参数
如果提供了初始参数,则总和以指定值开始。
import numpy as np
Arr = np.array([[5,10],[15,20]])
print("Array 为:")
print(Arr)
#沿轴求和=0,初始=100
print("\n沿轴求和=0 (initial=100)")
print(np.sum(Arr, axis=0, initial=100))
上述代码的输出将为:
Array 为:
[[ 5 10]
[15 20]]
沿轴求和=0 (initial=100)
[120 130]
示例:带有 where 参数的 sum()
使用 where 参数,可以传递一个布尔数组来指定要包含在和中的元素。
import numpy as np
Arr = np.array([[5,10,15],[20,25,30]])
whr = np.array([[True,False,True],[False,True,False]])
print("Array 为:")
print(Arr)
print("\nArray of bools 为:")
print(whr)
#sum沿轴=1与where参数
print("\n沿轴求和=1 使用 where 参数")
print(np.sum(Arr, axis=1, where=whr))
上述的输出代码为:
Array 为:
[[ 5 10 15]
[20 25 30]]
Array of bools 为:
[[ True False True]
[False True False]]
沿轴求和=1 使用 where 参数
[20 25]