.. _cn_api_fluid_layers_masked_select:

masked_select
-------------------------------

.. py:function:: paddle.fluid.layers.masked_select(input, mask)

该OP将根据mask Tensor的真值选取输入Tensor元素，并返回一个一维Tensor

参数：
          - **input** （Variable）- 输入Tensor，数据类型为int32, float32, float64。
          - **mask** （Variable）- mask Tensor， 数据类型为bool。


返回：根据mask选择后的tensor

返回类型：  Variable


**示例代码**

..  code-block:: python

    import paddle.fluid as fluid
    import numpy as np
    mask_shape = [4,1]
    shape = [4,4]
    data = np.random.random(mask_shape).astype("float32")
    input_data = np.random.randint(5,size=shape).astype("float32")
    mask_data = data > 0.5

    # print(input_data)
    # [[0.38972723 0.36218056 0.7892614  0.50122297]
    #  [0.14408113 0.85540855 0.30984417 0.7577004 ]
    #  [0.97263193 0.5248062  0.07655851 0.75549215]
    #  [0.26214206 0.32359877 0.6314582  0.2128865 ]]

    # print(mask_data)
    # [[ True]
    #  [ True]
    #  [False]
    #  [ True]]

    input = fluid.data(name="input",shape=[4,4],dtype="float32")
    mask = fluid.data(name="mask",shape=[4,1],dtype="bool")
    result = fluid.layers.masked_select(input=input, mask=mask)
    place = fluid.CPUPlace()
    exe = fluid.Executor(place)
    start = fluid.default_startup_program()
    main = fluid.default_main_program()
    exe.run(start)
    masked_select_result= exe.run(main, feed={'input':input_data, 'mask':mask_data}, fetch_list=[result])
    # print(masked_select_result)
    # [0.38972723 0.36218056 0.7892614  0.50122297 0.14408113 0.85540855
    #   0.30984417 0.7577004  0.26214206 0.32359877 0.6314582  0.2128865 ]


