xarray.Dataset.where

Dataset.where(self, cond, other=<NA>, drop: bool = 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

Return type

Same xarray type as caller, with dtype float64.

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

See also

numpy.where()

corresponding numpy function

where()

equivalent function