mars.tensor.isfinite#

mars.tensor.isfinite(x, out=None, where=None, **kwargs)[来源]#

测试元素是否有限(不是无限或不是数字)。

结果以布尔张量返回。

Parameters
  • x (array_like) – 输入值。

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

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

  • **kwargs

Returns

y – 对于标量输入,如果输入是有限的,结果是一个值为 True 的新布尔值;否则值为 False(输入是正无穷、负无穷或不是一个数字)。

对于数组输入,结果是一个与输入具有相同维度的布尔数组,如果输入的相应元素是有限的,则值为 True;否则值为 False(元素是正无穷、负无穷或不是一个数字)。

Return type

张量, bool

另请参阅

isinf, isneginf, isposinf, isnan

备注

不是数字,正无穷大和负无穷大被认为是非有限的。

Mars 使用 IEEE 标准的二进制浮点运算 (IEEE 754)。这意味着非数字(Not a Number)并不等同于无穷大。同时,正无穷大(positive infinity)不等同于负无穷大(negative infinity)。但是,无穷大等同于正无穷大。如果在 x 是标量输入时提供了第二个参数,或者第一个和第二个参数的形状不同,则会导致错误。

示例

>>> import mars.tensor as mt
>>> mt.isfinite(1).execute()
True
>>> mt.isfinite(0).execute()
True
>>> mt.isfinite(mt.nan).execute()
False
>>> mt.isfinite(mt.inf).execute()
False
>>> mt.isfinite(mt.NINF).execute()
False
>>> mt.isfinite([mt.log(-1.).execute(),1.,mt.log(0).execute()]).execute()
array([False,  True, False])
>>> x = mt.array([-mt.inf, 0., mt.inf])
>>> y = mt.array([2, 2, 2])
>>> mt.isfinite(x, y).execute()
array([0, 1, 0])
>>> y.execute()
array([0, 1, 0])