maxframe.tensor.prod#

maxframe.tensor.prod(a, axis=None, dtype=None, out=None, keepdims=None)[源代码]#

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

参数:
  • a (array_like) -- 输入数据。

  • axis (None or int or tuple of ints, optional) -- 执行乘积操作的轴或多个轴。默认值 axis=None 会计算输入张量中所有元素的乘积。如果 axis 是负数,则从最后一个轴开始向前计数。如果 axis 是一个整数元组,则对元组中指定的所有轴执行乘积操作,而不是单个轴或所有轴。

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

  • out (Tensor, optional) -- 用于存储结果的替代输出张量。它必须具有与期望输出相同的形状,但输出值的类型在必要时会被转换。

  • keepdims (bool, optional) -- 如果设置为 True,则在结果中保留被规约的轴,其大小为一。使用此选项时,结果将能够与输入数组正确广播。如果传递默认值,则 keepdims 不会被传递到 Tensor 子类的 prod 方法中;但如果传递的是非默认值,则会被传递。如果子类的 sum 方法没有实现 keepdims,则会引发异常。

返回:

product_along_axis -- 一个形状与 a 相同但移除了指定轴的张量。如果指定了 out,则返回对 out 的引用。

返回类型:

Tensor,见上文的 dtype 参数。

参见

Tensor.prod

等效方法

备注

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

>>> import maxframe.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