🍾 Xarray is now 10 years old! πŸŽ‰

xarray.core.rolling.DataArrayRolling.reduce

xarray.core.rolling.DataArrayRolling.reduce#

DataArrayRolling.reduce(func, keep_attrs=None, **kwargs)[source]#

Reduce the items in this group by applying func along some dimension(s).

Parameters:
  • func (callable()) – Function which can be called in the form func(x, **kwargs) to return the result of collapsing an np.ndarray over an the rolling dimension.

  • keep_attrs (bool, default: None) – If True, the attributes (attrs) will be copied from the original object to the new one. If False, the new object will be returned without attributes. If None uses the global default.

  • **kwargs (dict) – Additional keyword arguments passed on to func.

Returns:

reduced (DataArray) – Array with summarized data.

Examples

>>> da = xr.DataArray(np.arange(8).reshape(2, 4), dims=("a", "b"))
>>> rolling = da.rolling(b=3)
>>> rolling.construct("window_dim")
<xarray.DataArray (a: 2, b: 4, window_dim: 3)> Size: 192B
array([[[nan, nan,  0.],
        [nan,  0.,  1.],
        [ 0.,  1.,  2.],
        [ 1.,  2.,  3.]],

       [[nan, nan,  4.],
        [nan,  4.,  5.],
        [ 4.,  5.,  6.],
        [ 5.,  6.,  7.]]])
Dimensions without coordinates: a, b, window_dim
>>> rolling.reduce(np.sum)
<xarray.DataArray (a: 2, b: 4)> Size: 64B
array([[nan, nan,  3.,  6.],
       [nan, nan, 15., 18.]])
Dimensions without coordinates: a, b
>>> rolling = da.rolling(b=3, min_periods=1)
>>> rolling.reduce(np.nansum)
<xarray.DataArray (a: 2, b: 4)> Size: 64B
array([[ 0.,  1.,  3.,  6.],
       [ 4.,  9., 15., 18.]])
Dimensions without coordinates: a, b