🍾 Xarray is now 10 years old! πŸŽ‰

xarray.DataArray.idxmin

xarray.DataArray.idxmin#

DataArray.idxmin(dim=None, *, skipna=None, fill_value=<NA>, keep_attrs=None)[source]#

Return the coordinate label of the minimum value along a dimension.

Returns a new DataArray named after the dimension with the values of the coordinate labels along that dimension corresponding to minimum values along that dimension.

In comparison to argmin(), this returns the coordinate label while argmin() returns the index.

Parameters:
  • dim (str, optional) – Dimension over which to apply idxmin. This is optional for 1D arrays, but required for arrays with 2 or more dimensions.

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

  • fill_value (Any, default: NaN) – Value to be filled in case all of the values along a dimension are null. By default this is NaN. The fill value and result are automatically converted to a compatible dtype if possible. Ignored if skipna is False.

  • keep_attrs (bool or None, optional) – 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.

Returns:

reduced (DataArray) – New DataArray object with idxmin applied to its data and the indicated dimension removed.

Examples

>>> array = xr.DataArray(
...     [0, 2, 1, 0, -2], dims="x", coords={"x": ["a", "b", "c", "d", "e"]}
... )
>>> array.min()
<xarray.DataArray ()> Size: 8B
array(-2)
>>> array.argmin(...)
{'x': <xarray.DataArray ()> Size: 8B
array(4)}
>>> array.idxmin()
<xarray.DataArray 'x' ()> Size: 4B
array('e', dtype='<U1')
>>> array = xr.DataArray(
...     [
...         [2.0, 1.0, 2.0, 0.0, -2.0],
...         [-4.0, np.nan, 2.0, np.nan, -2.0],
...         [np.nan, np.nan, 1.0, np.nan, np.nan],
...     ],
...     dims=["y", "x"],
...     coords={"y": [-1, 0, 1], "x": np.arange(5.0) ** 2},
... )
>>> array.min(dim="x")
<xarray.DataArray (y: 3)> Size: 24B
array([-2., -4.,  1.])
Coordinates:
  * y        (y) int64 24B -1 0 1
>>> array.argmin(dim="x")
<xarray.DataArray (y: 3)> Size: 24B
array([4, 0, 2])
Coordinates:
  * y        (y) int64 24B -1 0 1
>>> array.idxmin(dim="x")
<xarray.DataArray 'x' (y: 3)> Size: 24B
array([16.,  0.,  4.])
Coordinates:
  * y        (y) int64 24B -1 0 1