mars.tensor.prod#

mars.tensor.prod(a, axis=None, dtype=None, out=None, keepdims=None, combine_size=None)[来源]#

返回给定轴上张量元素的乘积。

Parameters
  • a (array_like) – 输入数据。

  • axis (inttupleints, 可选) –

    在此执行乘积的轴。默认情况下, axis=None 将计算输入张量中所有元素的乘积。如果轴为负,则从最后一个轴计数到第一个轴。

    如果轴是整数的元组,则对元组中指定的所有轴而不是单一轴或之前的所有轴执行乘积。

  • dtype (dtype, 可选) – 返回的张量的类型,以及元素相乘的累加器的类型。默认情况下使用a的dtype,除非a的整数dtype的精度低于默认平台整数。在这种情况下,如果a是有符号的,则使用平台整数;如果a是无符号的,则使用与平台整数相同精度的无符号整数。

  • out (Tensor, 可选) – 备用输出张量,用于放置结果。它必须具有与预期输出相同的形状,但输出值的类型在必要时将被转换。

  • keepdims (bool, 可选) –

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

    如果传递默认值,则keepdims不会传递给Tensor的子类的prod方法,然而任何非默认值将会被传递。如果子类的sum方法未实现keepdims,则会引发异常。

  • combine_size (int, 可选) – 拼接的块数。

Returns

product_along_axis – 一个形状为 a 的张量,但指定的轴已被移除。如果指定,返回对 out 的引用。

Return type

张量,见上面的 dtype 参数。

另请参阅

Tensor.prod

等效方法

备注

当使用整数类型时,算术运算是模块化的,溢出时不会引发错误。这意味着,在32位平台上:

>>> import mars.tensor as mt
>>> x = mt.array([536870910, 536870910, 536870910, 536870910])
>>> mt.prod(x).execute()  # random
16

空数组的乘积是中性元素 1:

>>> mt.prod([]).execute()
1.0

示例

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

>>> mt.prod([1.,2.]).execute()
2.0

即使输入数组是二维的:

>>> mt.prod([[1.,2.],[3.,4.]]).execute()
24.0

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

>>> mt.prod([[1.,2.],[3.,4.]], axis=1).execute()
array([  2.,  12.])

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

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

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

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