np.prod()
numpy.prod(a, axis=None, dtype=None, out=None, keepdims=<no value>, initial=<no value>, where=<no value>)
:返回给定轴上数组元素的乘积。
参数:
a
:输入数据。axis
:无或整数或整数元组,可选。
它是执行产品所沿的一个或多个轴。默认轴为“无”,它将计算输入数组中所有元素的乘积。如果轴为负,则从最后一个轴开始计数。
如果 \(axis\) 是 \(int\) 的元组,那么将在元组中指定的所有轴上执行乘积运算,而不是像以前那样是单个轴或所有轴。dtype
:它是返回数组的类型,也是元素与之相乘的累加器的类型。除非 \(a\) 具有小于默认平台整数精度的整数 \(dtype\),否则默认情况下使用 \(a\) 的 \(dtype\)。在这种情况下,如果 \(a\) 是带符号的,则使用平台整数,而如果 \(a\) 是无符号的,则使用与平台整数具有相同精度的无符号整数。out
:替代输出数组,用于放置结果。它必须具有与预期输出相同的形状,但是如有必要,将强制转换输出值的类型。keepdims
:如果将其设置为 \(True\),则缩小的轴将保留为尺寸 \(1\) 的尺寸。使用此选项,结果将针对输入数组正确广播。initial
:指定初始值。where
:指定相乘的轴。
示例:
使用整数类型时算术是模块化的,溢出时不会引发错误。这意味着,在 32 位平台上:
import numpy as np
x = np.array([536870910, 536870910, 536870910, 536870910])
print(np.prod(x))
16
空数组的乘积是中性元素 \(1\):
print(np.prod([]))
1.0
默认情况下,计算所有元素的乘积:
print(np.prod([1.,2.]))
2.0
输入数组是二维的:
print(np.prod([[1.,2.],[3.,4.]]))
24.0
可以指定相乘的轴:
print(np.prod([1., np.nan, 3.], where=[True, False, True]))
3.0
如果 \(x\) 的类型是无符号的,则输出类型是无符号平台整数:
x = np.array([1, 2, 3], dtype=np.uint8)
print(np.prod(x).dtype == np.uint)
True
如果 \(x\) 的类型是有符号的,则输出类型是默认平台整数:
x = np.array([1, 2, 3], dtype=np.int8)
print(np.prod(x).dtype == int)
True
使用非 1 的值启动产品:
print(np.prod([1, 2], initial=5))
10