Python numpy sum

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。