numpy.prod#

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

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

参数:
aarray_like

输入数据.

axisNone 或 int 或 int 的元组,可选

沿着哪个轴或哪些轴执行乘积.默认情况下,axis=None,将计算输入数组中所有元素的乘积.如果轴为负数,则从最后一个轴计数到第一个轴.

在 1.7.0 版本加入.

如果 axis 是一个整数的元组,则会在元组中指定的所有轴上执行乘积,而不是像之前那样只在一个轴或所有轴上执行.

dtypedtype, 可选

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

outndarray, 可选

要在其中放置结果的替代输出数组.它必须具有与预期输出相同的形状,但如果需要,输出值的类型将被转换.

keepdimsbool, 可选

如果设置为 True,被减少的轴将作为尺寸为1的维度保留在结果中.使用此选项,结果将正确地与输入数组广播.

如果传递了默认值,那么 keepdims 将不会传递给 ndarray 子类的 prod 方法,然而任何非默认值将会被传递.如果子类的方法没有实现 keepdims 任何异常将被引发.

initial标量,可选

该产品的起始值.详见 reduce.

在 1.15.0 版本加入.

where类数组的布尔值,可选

产品中包含的元素.详情请参见 reduce.

在 1.17.0 版本加入.

返回:
product_along_axis : ndarray, 见上面的 dtype 参数.ndarray, 见

一个形状为 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