numpy.prod#

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

返回给定轴上数组元素的乘积。

参数::
aarray_like

输入数据。

axisNone 或 int 或 int 元组,可选

执行乘积的轴或轴。默认值为 axis=None,将计算输入数组中所有元素的乘积。如果 axis 为负数,则从最后一个轴到第一个轴进行计数。

1.7.0 版中的新内容。

如果 axis 是 int 元组,则将在元组中指定的轴上执行乘积,而不是像以前一样在一个轴或所有轴上执行。

dtypedtype,可选

返回数组的类型,以及元素相乘的累加器类型。默认情况下使用 a 的 dtype,除非 a 的整数 dtype 比默认平台整数的精度低。在这种情况下,如果 a 是有符号的,则使用平台整数,而如果 a 是无符号的,则使用与平台整数精度相同的无符号整数。

outndarray,可选

放置结果的备用输出数组。它必须具有与预期输出相同的形状,但如果需要,输出值的类型将被强制转换。

keepdimsbool,可选

如果将其设置为 True,则被缩减的轴将作为大小为 1 的维度保留在结果中。使用此选项,结果将与输入数组正确广播。

如果传递默认值,则不会将 keepdims 传递给 prodndarray 子类的子类方法,但任何非默认值将被传递。如果子类方法没有实现 keepdims,则会引发任何异常。

initial标量,可选

此乘积的起始值。有关详细信息,请参阅 reduce

1.15.0 版中的新内容。

wherebool 型 array_like,可选

要包含在乘积中的元素。有关详细信息,请参阅 reduce

1.17.0 版中的新内容。

返回值::
product_along_axisndarray,参见上面的 dtype 参数。

一个形状与 a 相同但消除了指定轴的数组。如果指定,则返回对 out 的引用。

参见

ndarray.prod

等效方法

输出类型确定

注释

使用整数类型时,算术运算为模运算,并且在溢出时不会引发错误。这意味着在 32 位平台上

>>> x = np.array([536870910, 536870910, 536870910, 536870910])
>>> np.prod(x)
16 # may vary

空数组的乘积为中性元素 1

>>> np.prod([])
1.0

示例

默认情况下,计算所有元素的乘积

>>> import numpy as np
>>> np.prod([1.,2.])
2.0

即使输入数组是二维的

>>> a = np.array([[1., 2.], [3., 4.]])
>>> np.prod(a)
24.0

但我们也可以指定要相乘的轴

>>> np.prod(a, axis=1)
array([  2.,  12.])
>>> np.prod(a, axis=0)
array([3., 8.])

或选择要包含的特定元素

>>> np.prod([1., np.nan, 3.], where=[True, False, True])
3.0

如果 x 的类型是无符号的,则输出类型是无符号的平台整数

>>> x = np.array([1, 2, 3], dtype=np.uint8)
>>> np.prod(x).dtype == np.uint
True

如果 x 是有符号整数类型,则输出类型是默认平台整数

>>> x = np.array([1, 2, 3], dtype=np.int8)
>>> np.prod(x).dtype == int
True

您也可以从一个以外的值开始乘积

>>> np.prod([1, 2], initial=5)
10