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
ofHashable
orNone
, optional) – Dimension(s) over which to apply func. By default func is applied over all dimensions.keep_attrs (
bool
orNone
, 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 applyfunc
to variables with a numeric dtype.**kwargs (
Any
) – Additional keyword arguments passed on tofunc
.
- 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