# xarray.computation.rolling.DataArrayRolling.reduce

#### DataArrayRolling.reduce(func, keep_attrs=None, , sliding_window_view_kwargs=None, \*\*kwargs)[[source]](https://github.com/pydata/xarray/blob/main/xarray/computation/rolling.py#L513-L616)

Reduce each window by applying func.

Equivalent to `.construct(...).reduce(func, ...)`.

* **Parameters:**
  * **func** ([`callable()`](https://docs.python.org/3/builtins/functions.html#callable)) – Function which can be called in the form
    func(x, \*\*kwargs) to return the result of collapsing an
    np.ndarray over the rolling dimension.
  * **keep_attrs** ([`bool`](https://docs.python.org/3/builtins/functions.html#bool), *default*: [`None`](https://docs.python.org/3/builtins/constants.html#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`](https://docs.python.org/3/builtins/stdtypes.html#dict)) – Additional keyword arguments passed on to func.
* **Returns:**
  **reduced** ([`DataArray`](xarray.DataArray.html.md#xarray.DataArray)) – Array with summarized data.

#### SEE ALSO
[`numpy.lib.stride_tricks.sliding_window_view`](https://numpy.org/doc/stable/reference/generated/numpy.lib.stride_tricks.sliding_window_view.html#numpy.lib.stride_tricks.sliding_window_view), [`dask.array.lib.stride_tricks.sliding_window_view`](https://docs.dask.org/en/latest/generated/dask.array.lib.stride_tricks.sliding_window_view.html#dask.array.lib.stride_tricks.sliding_window_view)

### Notes

With dask arrays, it’s possible to pass the `automatic_rechunk` kwarg as
`sliding_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

<div class="try_examples_button_container"><button class="try_examples_button" onclick="window.tryExamplesShowIframe('614d792b-8c7b-4485-a1e0-e3fada5ca185','f787c2a5-f6a2-4144-a740-fce13f8c5a35','9509f820-8bf6-4bbd-8816-358ca378abb9','../lite/tree/../notebooks/index.html?path=f48a2da0_2d31_48ac_a023_627eb7419a38.ipynb','None')">Try it in your browser!</button></div>
```pycon
>>> 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
```

```pycon
>>> 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
```

```pycon
>>> 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
```

<div id="9509f820-8bf6-4bbd-8816-358ca378abb9" class="try_examples_outer_iframe  hidden"><div class="try_examples_button_container"><button class="try_examples_button" onclick="window.tryExamplesHideIframe('614d792b-8c7b-4485-a1e0-e3fada5ca185','9509f820-8bf6-4bbd-8816-358ca378abb9')">Go Back</button><button class="try_examples_button" onclick="window.openInNewTab('614d792b-8c7b-4485-a1e0-e3fada5ca185','9509f820-8bf6-4bbd-8816-358ca378abb9')">Open In Tab</button></div><div id="f787c2a5-f6a2-4144-a740-fce13f8c5a35" class="jupyterlite_sphinx_iframe_container"></div></div><script>document.addEventListener("DOMContentLoaded", function() {window.loadTryExamplesConfig("../try_examples.json");});</script>
