mindspore.ops.nonzero

mindspore.ops.nonzero(input, as_tuple=False)[源代码]

返回所有非零元素下标位置。

参数:
  • input (Tensor) - 输入Tensor,其秩应大于等于1。

  • as_tuple (bool, 可选) - 是否以tuple形式输出。如果为 False ,输出Tensor,默认值: False 。如果为 True ,输出Tuple[Tensor], 只支持 Ascend

返回:
  • 当as_tuple=False,输出Tensor,维度为2,类型为int64,表示输入中所有非零元素的下标。

  • 当as_tuple=True,输出Tuple[Tensor],类型为int64,长度为输入张量的维度,每一元素是输入张量在该维度下所有非零元素的下标的1D张量。

异常:
  • TypeError - 如果 input 不是Tensor。

  • TypeError - 如果 as_tuple 不是bool。

  • ValueError - 如果 input 的维度为0。

支持平台:

Ascend GPU CPU

样例:

>>> import mindspore
>>> import numpy as np
>>> from mindspore import Tensor, ops
>>> x = Tensor(np.array([[[1,  0], [-5, 0]]]), mindspore.int32)
>>> output = ops.nonzero(x)
>>> print(output)
[[0 0 0]
 [0 1 0]]
>>> x = Tensor(np.array([1, 0, 2, 0, 3]), mindspore.int32)
>>> output = ops.nonzero(x, False)
>>> print(output)
[[0]
 [2]
 [4]]
>>> x = Tensor(np.array([[[1,  0], [-5, 0]]]), mindspore.int32)
>>> output = ops.nonzero(x, True)
>>> print(output)
(Tensor(shape=[2], dtype=Int64, value=[0, 0]),
 Tensor(shape=[2], dtype=Int64, value=[0, 1]),
 Tensor(shape=[2], dtype=Int64, value=[0, 0]))
>>> x = Tensor(np.array([1, 0, 2, 0, 3]), mindspore.int32)
>>> output = ops.nonzero(x, True)
>>> print(output)
(Tensor(shape=[3], dtype=Int64, value=[0, 2, 4]), )