xarray.computation.rolling.DataArrayRolling.reduce#
- DataArrayRolling.reduce(func, keep_attrs=None, *, sliding_window_view_kwargs=None, **kwargs)[source]#
Reduce each window by applying func.
Equivalent to
.construct(...).reduce(func, ...)
.- 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.sliding_window_view_kwargs – Keyword arguments that should be passed to the underlying array type’s
sliding_window_view
function.**kwargs (
dict
) – Additional keyword arguments passed on to func.
- Returns:
reduced (
DataArray
) – Array with summarized data.
See also
numpy.lib.stride_tricks.sliding_window_view
,dask.array.lib.stride_tricks.sliding_window_view
Notes
With dask arrays, it’s possible to pass the
automatic_rechunk
kwarg assliding_window_view_kwargs={"automatic_rechunk": True}
. This controls whether dask should automatically rechunk the output to avoid exploding chunk sizes. Automatically rechunking is the default behaviour. Importantly, each chunk will be a view of the data so large chunk sizes are only safe if no copies are made later.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