xarray.DataTree.median

xarray.DataTree.median#

DataTree.median(dim=None, *, skipna=None, keep_attrs=None, **kwargs)[source]#

Reduce this DataTree’s data by applying median along some dimension(s).

Parameters
  • dim (str, Iterable of Hashable, "..." or None, default: None) – Name of dimension[s] along which to apply median. For e.g. dim="x" or dim=["x", "y"]. If “…” or None, will reduce over all dimensions.

  • skipna (bool or None, optional) – If True, skip missing values (as marked by NaN). By default, only skips missing values for float dtypes; other dtypes either do not have a sentinel missing value (int) or skipna=True has not been implemented (object, datetime64 or timedelta64).

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

  • **kwargs (Any) – Additional keyword arguments passed on to the appropriate array function for calculating median on this object’s data. These could include dask-specific kwargs like split_every.

Returns

reduced (DataTree) – New DataTree with median applied to its data and the indicated dimension(s) removed

See also

numpy.median, dask.array.median, Dataset.median, DataArray.median

Aggregation

User guide on reduction or aggregation operations.

Notes

Non-numeric variables will be removed prior to reducing.

Examples

>>> dt = xr.DataTree(
...     xr.Dataset(
...         data_vars=dict(foo=("time", np.array([1, 2, 3, 0, 2, np.nan]))),
...         coords=dict(
...             time=(
...                 "time",
...                 pd.date_range("2001-01-01", freq="ME", periods=6),
...             ),
...             labels=("time", np.array(["a", "b", "c", "c", "b", "a"])),
...         ),
...     ),
... )
>>> dt
<xarray.DataTree>
Group: /
    Dimensions:  (time: 6)
    Coordinates:
      * time     (time) datetime64[ns] 48B 2001-01-31 2001-02-28 ... 2001-06-30
        labels   (time) <U1 24B 'a' 'b' 'c' 'c' 'b' 'a'
    Data variables:
        foo      (time) float64 48B 1.0 2.0 3.0 0.0 2.0 nan
>>> dt.median()
<xarray.DataTree>
Group: /
    Dimensions:  ()
    Data variables:
        foo      float64 8B 2.0

Use skipna to control whether NaNs are ignored.

>>> dt.median(skipna=False)
<xarray.DataTree>
Group: /
    Dimensions:  ()
    Data variables:
        foo      float64 8B nan