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
维的坐标。
参数¶
x (Tensor)– 输入的 Tensor。
as_tuple (bool,可选) - 返回格式。是否以
1-D Tensor
构成的元组格式返回。
返回¶
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, 1], dtype=int64, place=Place(cpu), stop_gradient=True,
[[0],
[1],
[2]])
Tensor(shape=[3, 1], 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, 1], dtype=int64, place=Place(cpu), stop_gradient=True,
[[1],
[3]])