今回はNumPyの最小要素のインデックスを取得してくれるargmin
関数の使い方について解説します。
np.ndarray.argmin,np.argmin
APIドキュメント
それぞれの関数のAPIドキュメントは以下の通りです。
まずはndarray.argmin
関数から。配列のメンバ関数となっています。
np.ndarray.argmin(axis=None, out=None)
params:
パラメータ名 | 型 | 概要 |
---|---|---|
axis | int | (省略可能)初期値None 最小値を読み取る軸の方向を指定します。 |
out | array_like (配列に相当するもの) |
(省略可能)初期値None 返されたインデックスの値を収納する配列を指定します。 |
returns:
指定された配列、軸方向のなかで最小値がある最初に出現する値のインデックスを返します。
次にnp.argmin
関数です。
np.argmin(a, axis=None, out=None)
params:
パラメータ名 | 型 | 概要 |
---|---|---|
a | array_like (配列に相当するもの) |
最小値のインデックスを求めたい配列を指定します。 |
axis | int | (省略可能)初期値None 最小値を読み取る軸の方向を指定します。 |
out | array_like (配列に相当するもの) |
(省略可能)初期値None 返されたインデックスの値を収納する配列を指定します。 |
returns:
指定された配列、軸方向のなかで最小値がある最初に出現する値のインデックスを返します。
最小のインデックスを求める
最初に基本的な使い方からです。
サンプルコードを見ていきます。
`axis`の詳しい考え方は先程の`argmax`のところで扱ったので省略します。
```python
In [1]: import numpy as np # numpyモジュールのインポート
In [2]: d = np.array([
...: [1.2, 1.5, 2.3, 1.8],
...: [0.2, 2.5, 2.1, 2.0],
...: [3.1, 3.3, 1.5, 2.1]])
In [3]: d.argmin() # まずは引数を指定しない状態で
Out[3]: 4
In [4]: np.argmin(d) # 同様に
Out[4]: 4
このように配列を1次元化した状態でのインデックスを返しています。
1次元化して出力しない
unravel_index
関数を使うと1次元化しない状態でのインデックスを知ることができます。
In [5]: np.unravel_index(np.argmin(d), d.shape) # こうすれば1次元化されない状態でのインデックスが返される
Out[5]: (1, 0)
特定の軸方向の最小値をみる
axis
引数を指定することで特定の軸方向での最小値をもつインデックスを知ることができます。
In [6]: np.argmin(d, axis=0) # 次は軸指定
Out[6]: array([1, 0, 2, 0])
In [7]: np.argmin(d, axis=1)
Out[7]: array([0, 0, 2])
In [8]: d.argmin(axis=1) # ndarray.argminでももちろん同じ操作ができる
Out[8]: array([0, 0, 2])