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 是一个必需的 ndarray,所有剩余的参数都是可选的。
Python numpy sum 示例
默认情况下,它将根据 ndarray 数据类型显示总和。但是,使用 dtype 参数,您可以更改输出的数据类型。例如,您可以将结果从浮点数更改为整数或复数等。
在此示例中,我们声明了一个一维ndarray。接下来,Numpy 程序计算所有数组项的总和,并使用 dtype 参数更改数据类型。
import numpy as np a = np.array([2, 4, 6, 8.5, 10, 12.1]) b = np.sum(a) print(b) c = np.sum(a, dtype = np.int8) print(c) d = np.sum(a, dtype = np.float32, initial = 50) print(d)
42.6
42
92.6
b = 2 + 4 + 6 + 8.5 + 10 + 12.1 = 42.6
对于 c 变量,我们使用 dtype 将数据类型更改为 8 位整数。
Python numpy sum 二维示例
此程序将声明一个二维方阵并计算总和。
initial 参数是起始值。使用此参数将某个值添加到整个总和或基于轴的总和。
import numpy as np a = np.array([[10, 20], [30, 40]]) b = np.sum(a) print(b) c = np.sum(a, initial = 100) print(c)
100
200
b = 10 + 20 + 30 + 40 = 100
c = 100 (初始值) + 10 + 20 + 30 + 40 = 200
如果未提供 axis,它将计算所有元素的总和,而不管维度或大小。如上例所示,它已返回二维数组的总和。
但是,通过指定 axis 值,我们可以计算行和列的总和。例如,在下面的示例中,axis = 0 计算每列的总和,axis = 1 计算每行的总和。
Python numpy sum 按列计算
在此示例中,我们使用 random.randint 方法生成一个 5 * 4 大小的二维数组。这里,c 变量计算每列的总和,d 变量将 100 加到每列的总和上。
import numpy as np a = np.random.randint(10, 50, size = (5, 4)) print(a) b = np.sum(a) print(b) c = np.sum(a, axis = 0) print(c) d = np.sum(a, axis = 0, initial = 100) print(d)
[[41 11 44 27]
[15 43 33 24]
[46 39 45 21]
[42 12 19 12]
[15 19 29 14]]
551
[159 124 170 98]
[259 224 270 198]
按行计算总和
要将 Python numpy sum() 方法的结果保存在已定义的数组中,请使用 out 参数。请记住,变量大小必须与输出匹配。
这里,axis = 1 将计算数组中每行的总和。
- np.sum(a, axis = 1, initial = 200) – 将 200 加到每行总和。
- np.sum(a, axis = 1, initial = 500, out = x) – 将输出保存在 x 变量中。
keepdims 参数接受布尔值 True 或 False,默认值为 false。因此,如果您使用 keepdims 参数并将值设置为 True,结果将被重塑。
import numpy as np a = np.random.randint(10, 50, size = (5, 4)) print(a) x = np.arange(5) b = np.sum(a) print(b) c = np.sum(a, axis = 1) print(c) d = np.sum(a, axis = 1, initial = 200) print(d) np.sum(a, axis = 1, initial = 500, out = x) print(x) e = np.sum(a, axis = 1, keepdims = True) print(e)
[[36 43 27 11]
[19 15 17 23]
[45 37 37 46]
[11 47 45 47]
[41 41 42 41]]
671
[117 74 165 150 165]
[317 274 365 350 365]
[617 574 665 650 665]
[[117]
[ 74]
[165]
[150]
[165]]
where 参数
numpy sum 方法中的 where 参数有助于从加法中排除行或列。在下面的代码中,我们沿 axis 使用了 where 参数。
import numpy as np #a = np.random.randint(20, 100, size = (3, 3)) a = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]]) print(a) b = np.sum(a) print(b) c = np.sum(a, where = [False, True, True]) print(c) d = np.sum(a, where = [False, True, True], axis = 0) print(d) e = np.sum(a, where = [True, False, True], axis = 1) print(e)
[[1 2 3]
[4 5 6]
[7 8 9]]
45
33
[ 0 15 18]
[ 4 10 16]
where = [False, True, True] – 它将计算第 2 列和第 3 列的总和,并省略第一列的值 1、4 和 7。
where = [True, True, False], axis = 0 – 它将为最后一列或第 3 列返回零,因为 where 参数不允许计算总和。
where = [True, False, True], axis = 1 – 在计算基于行的总和时,它将添加第 2 列的值 2、5 和 8。