NumPy 函数

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]