# xarray.Dataset.where

`Dataset.``where`(cond, other=<NA>, drop=False)

  Filter elements from this object according to a condition.

  This operation follows the normal broadcasting and alignment rules that xarray uses for binary arithmetic.

  Parameters:

  cond : DataArray or Dataset with boolean dtype

  > Locations at which to preserve this object’s values.

  other : scalar, DataArray or Dataset, optional

  > Value to use for locations in this object where `cond` is False. By default, these locations filled with NA.

  drop : boolean, optional

  > If True, coordinate labels that only correspond to False values of the condition are dropped from the result. Mutually exclusive with `other`.

  Returns: | Same type as caller.

  See also

  `numpy.where`
    corresponding numpy function
  `where`
    equivalent function

  Examples

      >>> import numpy as np
      >>> a = xr.DataArray(np.arange(25).reshape(5, 5), dims=('x', 'y'))
      >>> a.where(a.x + a.y < 4)
      <xarray.DataArray (x: 5, y: 5)>
      array([[  0.,   1.,   2.,   3.,  nan],
             [  5.,   6.,   7.,  nan,  nan],
             [ 10.,  11.,  nan,  nan,  nan],
             [ 15.,  nan,  nan,  nan,  nan],
             [ nan,  nan,  nan,  nan,  nan]])
      Dimensions without coordinates: x, y
      >>> a.where(a.x + a.y < 5, -1)
      <xarray.DataArray (x: 5, y: 5)>
      array([[ 0,  1,  2,  3,  4],
             [ 5,  6,  7,  8, -1],
             [10, 11, 12, -1, -1],
             [15, 16, -1, -1, -1],
             [20, -1, -1, -1, -1]])
      Dimensions without coordinates: x, y
      >>> a.where(a.x + a.y < 4, drop=True)
      <xarray.DataArray (x: 4, y: 4)>
      array([[  0.,   1.,   2.,   3.],
             [  5.,   6.,   7.,  nan],
             [ 10.,  11.,  nan,  nan],
             [ 15.,  nan,  nan,  nan]])
      Dimensions without coordinates: x, y