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, Dataset, or callable()) – Locations at which to preserve this object’s values. dtype must be bool. If a callable, it must expect this object as its only parameter.

  • 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 (bool, 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 xarray type as caller, with dtype float64.

Return type

DataArray or Dataset

Examples

>>> import numpy as np
>>> a = xr.DataArray(np.arange(25).reshape(5, 5), dims=("x", "y"))
>>> a
<xarray.DataArray (x: 5, y: 5)>
array([[ 0,  1,  2,  3,  4],
       [ 5,  6,  7,  8,  9],
       [10, 11, 12, 13, 14],
       [15, 16, 17, 18, 19],
       [20, 21, 22, 23, 24]])
Dimensions without coordinates: 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
>>> a.where(lambda x: x.x + x.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

See also

numpy.where

corresponding numpy function

where

equivalent function