.. _cn_api_tensor_where:

where
-------------------------------

.. py:function:: paddle.where(condition, x, y, name=None)

:alias_main: paddle.where
:alias: paddle.where,paddle.tensor.where,paddle.tensor.search.where
:update_api: paddle.fluid.layers.cond






该OP返回一个根据输入 ``condition``, 选择 ``x`` 或 ``y`` 的元素组成的多维 ``Tensor``  ：

.. math::
      Out_i =
      \left\{
      \begin{aligned}
      &X_i, & & if \ cond_i \ is \ True \\
      &Y_i, & & if \ cond_i \ is \ False \\
      \end{aligned}
      \right.

参数：
    - **condition** （Variable）- 选择 ``x`` 或 ``y`` 元素的条件 。
    - **x** （Variable）- 多维 ``Tensor`` ，数据类型为 ``float32`` 或 ``float64`` 或 ``int32`` 或 ``int64`` 。
    - **y** （Variable）- 多维 ``Tensor`` ，数据类型为 ``float32`` 或 ``float64`` 或 ``int32`` 或 ``int64`` 。
    - **name** （str，可选）- 具体用法请参见 :ref:`api_guide_Name` ，一般无需设置，默认值为None。

返回：数据类型与 ``x`` 相同的 ``Tensor`` 。

返回类型：Variable。


**代码示例：**

.. code-block:: python

          import paddle
          import numpy as np
          import paddle.fluid as fluid

          x_i = np.array([0.9383, 0.1983, 3.2, 1.2]).astype("float32")
          y_i = np.array([1.0, 1.0, 1.0, 1.0]).astype("float32")

          with fluid.dygraph.guard():
              x = fluid.dygraph.to_variable(x_i)
              y = fluid.dygraph.to_variable(y_i)
              out = paddle.where(x>1, x, y)

          print(out.numpy())
          #out: [1.0, 1.0, 3.2, 1.2]
