mars.tensor.float_power#

mars.tensor.float_power(x1, x2, out=None, where=None, **kwargs)[来源]#

第一个张量的元素按逐项方式提升到第二个数组的幂。

将每个基数在 x1 中提升到在 x2 中相应位置的幂。 x1x2 必须能够广播到相同的形状。这与 幂函数不同,整数、float16 和 float32 会提升为 至少精度为 float64 的浮点数,因此结果总是 不精确。其目的是该函数将返回负幂的可用结果,并且对于正幂很少溢出。

Parameters
  • x1 (array_like) – 基础。

  • x2 (array_like) – 指数。

  • out (Tensor, None, 或 tupleTensor 和 None, 可选) – 结果存储的位置。如果提供,它必须具有和输入相同的广播形状。如果未提供或None,将返回一个新分配的张量。元组(仅作为关键字参数可能)必须具有与输出数量相等的长度。

  • where (array_like, 可选) – 值为 True 表示在该位置计算 ufunc,值为 False 表示保持输出中的该值不变。

  • **kwargs

Returns

yx1中的基数提升到x2中的指数。

Return type

张量

另请参阅

power

保持类型的幂函数

示例

对列表中的每个元素求立方。

>>> import mars.tensor as mt
>>> x1 = range(6)
>>> x1
[0, 1, 2, 3, 4, 5]
>>> mt.float_power(x1, 3).execute()
array([   0.,    1.,    8.,   27.,   64.,  125.])

将底数提高到不同的指数。

>>> x2 = [1.0, 2.0, 3.0, 3.0, 2.0, 1.0]
>>> mt.float_power(x1, x2).execute()
array([  0.,   1.,   8.,  27.,  16.,   5.])

广播的效果。

>>> x2 = mt.array([[1, 2, 3, 3, 2, 1], [1, 2, 3, 3, 2, 1]])
>>> x2.execute()
array([[1, 2, 3, 3, 2, 1],
       [1, 2, 3, 3, 2, 1]])
>>> mt.float_power(x1, x2).execute()
array([[  0.,   1.,   8.,  27.,  16.,   5.],
       [  0.,   1.,   8.,  27.,  16.,   5.]])