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