count_nonzero
沿给定的轴 axis 统计输入 Tensor x 中非零元素的个数。
参数
x (Tensor) - 输入的 Tensor,数据类型为:bool、float16、float32、float64、int32、int64。别名:
input。axis (None|int|list|tuple,可选) - 指定对
x进行统计的轴。axis可以是 int 或 int 元素的列表/元组。axis值应该在范围[-D,D)内,D 是x的维度。如果axis或其中的元素值小于 0,则等价于 \(axis + D\)。如果axis是 None,则对x的全部元素进行统计。默认值为 None。别名:dim。keepdim (bool,可选) - 是否在输出 Tensor 中保留被统计的维度。如果
keepdim为 True,则输出 Tensor 和x具有相同的维度(被统计的维度大小为 1);否则,输出 Tensor 会在axis上进行 squeeze 操作。默认值为 False。name (str,可选) - 具体用法请参见 api_guide_Name,一般无需设置,默认值为 None。
返回
Tensor,沿着axis统计输入 Tensor 中非零元素的个数,数据类型 int64。
代码示例
>>> import paddle
>>> # x is a 2-D Tensor:
>>> x = paddle.to_tensor(
... [
... [0.0, 1.1, 1.2],
... [0.0, 0.0, 1.3],
... [0.0, 0.0, 0.0],
... ]
... )
>>> out1 = paddle.count_nonzero(x)
>>> out1
Tensor(shape=[], dtype=int64, place=Place(cpu), stop_gradient=True,
3)
>>> out2 = paddle.count_nonzero(x, axis=0)
>>> out2
Tensor(shape=[3], dtype=int64, place=Place(cpu), stop_gradient=True,
[0, 1, 2])
>>> out3 = paddle.count_nonzero(x, axis=0, keepdim=True)
>>> out3
Tensor(shape=[1, 3], dtype=int64, place=Place(cpu), stop_gradient=True,
[[0, 1, 2]])
>>> out4 = paddle.count_nonzero(x, axis=1)
>>> out4
Tensor(shape=[3], dtype=int64, place=Place(cpu), stop_gradient=True,
[2, 1, 0])
>>> out5 = paddle.count_nonzero(x, axis=1, keepdim=True)
>>> out5
Tensor(shape=[3, 1], dtype=int64, place=Place(cpu), stop_gradient=True,
[[2],
[1],
[0]])
>>> # y is a 3-D Tensor:
>>> y = paddle.to_tensor(
... [
... [[0.0, 1.1, 1.2], [0.0, 0.0, 1.3], [0.0, 0.0, 0.0]],
... [[0.0, 2.5, 2.6], [0.0, 0.0, 2.4], [2.1, 2.2, 2.3]],
... ]
... )
>>> out6 = paddle.count_nonzero(y, axis=[1, 2])
>>> out6
Tensor(shape=[2], dtype=int64, place=Place(cpu), stop_gradient=True,
[3, 6])
>>> out7 = paddle.count_nonzero(y, axis=[0, 1])
>>> out7
Tensor(shape=[3], dtype=int64, place=Place(cpu), stop_gradient=True,
[1, 3, 5])