# xarray.DataArray.idxmin

#### DataArray.idxmin(dim=None, \*, skipna=None, fill_value=<NA>, keep_attrs=None)[[source]](https://github.com/pydata/xarray/blob/main/xarray/core/dataarray.py#L6164-L6273)

Return the coordinate label of the minimum value along one or more dimensions.

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.

If a sequence of dimensions or `...` is passed to `dim`, the
minimum is taken over all of them and a dict of DataArray objects,
one for each dimension, is returned instead, like
[`argmin()`](xarray.DataArray.argmin.html.md#xarray.DataArray.argmin). The result can be passed to
[`sel()`](xarray.DataArray.sel.html.md#xarray.DataArray.sel).

In comparison to [`argmin()`](xarray.DataArray.argmin.html.md#xarray.DataArray.argmin), this returns the
coordinate label while [`argmin()`](xarray.DataArray.argmin.html.md#xarray.DataArray.argmin) returns the index.

* **Parameters:**
  * **dim** (`Hashable`, [sequence](https://docs.python.org/3/glossary.html#term-sequence) of `Hashable` or [`...`](https://docs.python.org/3/builtins/constants.html#Ellipsis), *optional*) – Dimension(s) over which to apply idxmin. `...` means all
    dimensions. If not given, the only dimension of a 1D array is used,
    and all dimensions of an array with 2 or more dimensions.
  * **skipna** ([`bool`](https://docs.python.org/3/builtins/functions.html#bool) or [`None`](https://docs.python.org/3/builtins/constants.html#None), *default*: [`None`](https://docs.python.org/3/builtins/constants.html#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`).
    If False, NaN is treated as the minimum like in
    [`numpy.argmin()`](https://numpy.org/doc/stable/reference/generated/numpy.argmin.html#numpy.argmin), so the label of the first NaN is returned.
  * **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`](https://docs.python.org/3/builtins/functions.html#bool) or [`None`](https://docs.python.org/3/builtins/constants.html#None), *optional*) – If True, the attributes (`attrs`) of the coordinate are copied to
    the result. If False, the result is returned without attributes.
* **Returns:**
  **reduced** ([`DataArray`](xarray.DataArray.html.md#xarray.DataArray) or [`dict`](https://docs.python.org/3/builtins/stdtypes.html#dict) of [`DataArray`](xarray.DataArray.html.md#xarray.DataArray)) – New DataArray object with idxmin applied to its data and the
  indicated dimension removed, or a dict of them mapping each
  dimension to its coordinate labels if `dim` is a sequence or
  `...`.

#### SEE ALSO
[`Dataset.idxmin`](xarray.Dataset.idxmin.html.md#xarray.Dataset.idxmin), [`DataArray.idxmax`](xarray.DataArray.idxmax.html.md#xarray.DataArray.idxmax), [`DataArray.min`](xarray.DataArray.min.html.md#xarray.DataArray.min), [`DataArray.argmin`](xarray.DataArray.argmin.html.md#xarray.DataArray.argmin)

### Examples

<div class="try_examples_button_container"><button class="try_examples_button" onclick="window.tryExamplesShowIframe('f374483a-e870-4334-9871-564c9f7cb813','ed18584a-5a79-44ac-bc3c-25fea3cf64bc','5226cc28-3ccc-4592-ae91-be906cb62731','../lite/tree/../notebooks/index.html?path=27649a8f_0184_4f56_876c_34e87a91a7e4.ipynb','None')">Try it in your browser!</button></div>
```pycon
>>> 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')
```

```pycon
>>> 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
>>> array.idxmin(dim=["y", "x"])
{'y': <xarray.DataArray 'y' ()> Size: 8B
array(0), 'x': <xarray.DataArray 'x' ()> Size: 8B
array(0.)}
```

<div id="5226cc28-3ccc-4592-ae91-be906cb62731" class="try_examples_outer_iframe  hidden"><div class="try_examples_button_container"><button class="try_examples_button" onclick="window.tryExamplesHideIframe('f374483a-e870-4334-9871-564c9f7cb813','5226cc28-3ccc-4592-ae91-be906cb62731')">Go Back</button><button class="try_examples_button" onclick="window.openInNewTab('f374483a-e870-4334-9871-564c9f7cb813','5226cc28-3ccc-4592-ae91-be906cb62731')">Open In Tab</button></div><div id="ed18584a-5a79-44ac-bc3c-25fea3cf64bc" class="jupyterlite_sphinx_iframe_container"></div></div><script>document.addEventListener("DOMContentLoaded", function() {window.loadTryExamplesConfig("../try_examples.json");});</script>
