nonzero
返回输入 x 中非零元素的坐标。如果输入 x 有 n 维,共包含 z 个非零元素,当 as_tuple = False 时, 返回结果是一个 shape 等于 [z x n] 的 Tensor,第 i 行代表输入中第 i 个非零元素的坐标;当 as_tuple = True 时, 返回结果是由 n 个大小为 z 的 1-D Tensor 构成的元组,第 i 个 1-D Tensor 记录输入的非零元素在第 i 维的坐标。
备注
别名支持: 参数名 input 可替代 x ,如 nonzero(input=tensor_x) 等价于 nonzero(x=tensor_x) 。
参数
x (Tensor)– 输入的 Tensor。别名:
input。as_tuple (bool,可选) - 返回格式。是否以
1-D Tensor构成的元组格式返回。
关键字参数
out (Tensor,可选) - 输出 Tensor。默认值为 None。
返回
Tensor or tuple(1-D Tensor),数据类型为 INT64 。
代码示例
>>> import paddle
>>> x1 = paddle.to_tensor([[1.0, 0.0, 0.0],
... [0.0, 2.0, 0.0],
... [0.0, 0.0, 3.0]])
>>> x2 = paddle.to_tensor([0.0, 1.0, 0.0, 3.0])
>>> out_z1 = paddle.nonzero(x1)
>>> print(out_z1)
Tensor(shape=[3, 2], dtype=int64, place=Place(cpu), stop_gradient=True,
[[0, 0],
[1, 1],
[2, 2]])
>>> out_z1_tuple = paddle.nonzero(x1, as_tuple=True)
>>> for out in out_z1_tuple:
... print(out)
Tensor(shape=[3], dtype=int64, place=Place(cpu), stop_gradient=True,
[0, 1, 2])
Tensor(shape=[3], dtype=int64, place=Place(cpu), stop_gradient=True,
[0, 1, 2])
>>> out_z2 = paddle.nonzero(x2)
>>> print(out_z2)
Tensor(shape=[2, 1], dtype=int64, place=Place(cpu), stop_gradient=True,
[[1],
[3]])
>>> out_z2_tuple = paddle.nonzero(x2, as_tuple=True)
>>> for out in out_z2_tuple:
... print(out)
Tensor(shape=[2], dtype=int64, place=Place(cpu), stop_gradient=True,
[1, 3])