Python numpy prod

Python numpy prod() 函数计算给定数组中所有元素沿指定轴的乘积或乘法。

语法

此统计 Python numpy prod() 方法的语法是

numpy.prod(a, axis = None, dtype = None, out = None, keepdims = <no value>, initial = <no value>, where = <no value>)

在此,a 是一个必需的 ndarray,而所有剩余参数都是可选的。

Python numpy prod 示例

空数组的乘积返回元素 1 作为输出。

import numpy as np

a = np.array([])

b  = np.prod(a)
print(b)
1.0

在本例中,我们声明了一个一维 ndarray。接下来,它计算所有数组项的乘积。

初始参数是起始值。使用此参数可以根据需要向整个乘积或轴添加特定值。

import numpy as np

a = np.array([2, 4.5, 6, 8])

b  = np.prod(a)
print(b)

c = np.prod(a, initial = 10)
print(c)
432.0
4320.0

b = 2 * 4.5 * 6 * 8 = 432.0

c = 10 (初始) * 2 * 4.5 * 6 * 8 = 4320.0

dtype 参数有助于检查输出的数据类型。

import numpy as np

a = np.array([1.2, 2.4, 3.6, 4.8], dtype = np.int8)

b  = np.prod(a)
print(b)

if np.prod(a).dtype == int:
    print('Integer')
else:
    print('Not')
24
Integer

Python numpy prod 二维示例

在此程序中,我们将声明一个二维方阵并找到其乘积。

b = 2 * 3 * 4 * 5 = 120

c = 7 * 2 * 3 * 4 * 5 = 840

import numpy as np

a = np.array([[2, 3], [4, 5]])

b  = np.prod(a)
print(b)

c = np.prod(a, initial = 7)
print(c)
120
840

如果未提供轴,则此 prod() 方法将计算所有维度元素的乘积。如上例所示,它返回了二维数组的乘积。

但是,我们可以通过指定轴值来查找行和列的乘积。例如,在下面的示例中,axis = 0 计算每列的乘积,而 axis = 1 查找每一行。

按列

在此 示例 中,我们使用 random randint 方法生成一个 3*4 大小的二维 数组。在这里,c 变量查找每一列的乘积,d 变量查找每一列乘以 2 的总和。

import numpy as np

a = np.random.randint(1, 12, size = (3, 4))
print(a)

b  = np.prod(a)
print(b)

c = np.prod(a, axis = 0)
print(c)

d = np.prod(a, axis = 0, initial = 2)
print(d)
[[ 3  7  2 10]
 [10 10  7  1]
 [ 1  5 10  6]]

88200000

[ 30 350 140  60]

[ 60 700 280 120]

按行

使用 out 参数将 Python numpy prod() 方法的结果保存在数组中。请记住,变量大小必须与输出匹配。在此, 

  • axis = 1 将计算数组中每一行的乘法。 
  • axis = 1, initial = 3 – 对于每一行,它将结果乘以 3。
  • initial = 2, out = x – 将输出保存在 x 变量中。
  • keepdims 参数接受布尔值 True 或 False,默认值为 false。如果使用 keepdims 参数并将值赋为 True,则结果将被重塑。
import numpy as np

a = np.random.randint(1, 6, size = (3, 4))
print(a)

x = np.arange(3)

b  = np.prod(a)
print(b)

c = np.prod(a, axis = 1)
print(c)

d = np.prod(a, axis = 1, initial = 3)
print(d)

np.prod(a, axis = 1, initial = 2, out = x)
print(x)

e = np.prod(a, axis = 1,  keepdims = True)
print(e)
[[2 2 1 5]
 [1 5 5 1]
 [2 2 5 4]]

40000

[20 25 80]

[ 60  75 240]

[ 40  50 160]

[[20]
 [25]
 [80]]

where 参数

where 参数将行或列从乘法过程中省略。在下面的 Python numpy prod 代码中,我们沿轴使用了 where 参数。

import numpy as np

a = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 2]])
print(a)

b  = np.prod(a)
print(b)

c = np.prod(a, where = [False, True, True])
print(c)

d = np.prod(a, where = [False, True, True], axis = 0)
print(d)

e = np.prod(a, where = [True, False, True], axis = 1)
print(e)
[[1 2 3]
 [4 5 6]
 [7 8 2]]

80640

2880

[ 1 80 36]

[ 3 24 14]

where = [False, True, True] – 第一列为 false,因此它将查找第 2 列和第 3 列的乘积。c 变量 = 2 * 5 * 8 * 3 * 6 * 2 = 2880。

where = [False, True, True], axis = 0 – 对于第一列,空数组的乘积为 1。第 2 行的乘积 = 2 * 5 * 8,第 3 行的乘积 = 3 * 6 * 2。

where = [True, False, True], axis = 1 – 在查找基于行的总计时,它将省略第 2 列的值。第一行 = 1 * 3,第二行 = 4 * 6,第三行 = 7 * 2