🍾 Xarray is now 10 years old! 🎉

xarray.Dataset.reduce

Contents

xarray.Dataset.reduce#

Dataset.reduce(func, dim=None, *, keep_attrs=None, keepdims=False, numeric_only=False, **kwargs)[source]#

Reduce this dataset by applying func along some dimension(s).

Parameters:
  • func (callable()) – Function which can be called in the form f(x, axis=axis, **kwargs) to return the result of reducing an np.ndarray over an integer valued axis.

  • dim (str, Iterable of Hashable or None, optional) – Dimension(s) over which to apply func. By default func is applied over all dimensions.

  • keep_attrs (bool or None, optional) – If True, the dataset’s attributes (attrs) will be copied from the original object to the new one. If False (default), the new object will be returned without attributes.

  • keepdims (bool, default: False) – If True, the dimensions which are reduced are left in the result as dimensions of size one. Coordinates that use these dimensions are removed.

  • numeric_only (bool, default: False) – If True, only apply func to variables with a numeric dtype.

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

Returns:

reduced (Dataset) – Dataset with this object’s DataArrays replaced with new DataArrays of summarized data and the indicated dimension(s) removed.

Examples

>>> dataset = xr.Dataset(
...     {
...         "math_scores": (
...             ["student", "test"],
...             [[90, 85, 92], [78, 80, 85], [95, 92, 98]],
...         ),
...         "english_scores": (
...             ["student", "test"],
...             [[88, 90, 92], [75, 82, 79], [93, 96, 91]],
...         ),
...     },
...     coords={
...         "student": ["Alice", "Bob", "Charlie"],
...         "test": ["Test 1", "Test 2", "Test 3"],
...     },
... )

# Calculate the 75th percentile of math scores for each student using np.percentile

>>> percentile_scores = dataset.reduce(np.percentile, q=75, dim="test")
>>> percentile_scores
<xarray.Dataset> Size: 132B
Dimensions:         (student: 3)
Coordinates:
  * student         (student) <U7 84B 'Alice' 'Bob' 'Charlie'
Data variables:
    math_scores     (student) float64 24B 91.0 82.5 96.5
    english_scores  (student) float64 24B 91.0 80.5 94.5