【毎日Python】Pythonで配列の最大値・最小値のインデックスを取得する方法|numpy.argmax,argmin

argmax
毎日Python/こつこつPython

Pythonで配列の最大値・最小値のインデックスを取得する方法です。
使用するのは、Pythonのnumpyライブラリのargmax関数, ardmin関数です。

import numpy as np

このような配列で試してみます。

a = np.array([10, 23, 53, 33, 42, 19])

argmax関数で実行します。
最大値53のインデックスである2を取得することができました。
インデックスは0から始まるので、53のインデックスは2となります。

np.argmax(a)

実行結果:

2

最小値のインデックスも同様に取得することができます。
argmin関数で実行します。
最小値10のインデックスの0を取得することができました。

np.argmin(a)

実行結果:

0

次に、同じ値の最大値が2つ入っている配列で試してみましょう。

a = np.array([10, 23, 53, 33, 53, 19]) 

実行します。
1つ目の最大値53のインデックスである、2を取得することができました。
このように、最大値が複数ある場合には、1つ目の最大値のインデックスが返されます。
なお、最小値の場合も同様です。

np.argmax(a)

実行結果:

2

最後に、2次元配列で試してみましょう。

 = np.array([[10, 32, 22, 19, 29], [22, 49, 18, 53, 27]])

まずは、そのまま実行してみます。
53のインデックスである8が取得できました。
このようにデフォルトでは、配列を1次元にした場合の最大値が取得されます。

np.argmax(a)

実行結果:

8

そこで、それぞれの配列ごとに最大値のインデックスを取得したい場合には、第二引数に1を指定します。
実行します。
それぞれの配列の、最大値のインデックスを配列で取得することができました。
なお、最小値の場合も同様です。

np.argmax(a, 1)

実行結果:

array([1, 3])

関連メソッド

【毎日Python】Pythonで配列の最大値、最小値を取得する方法|numpy.ndarray.max/min

【毎日Python】Pythonで配列やリストを比較して最大値を取得する方法|numpy.maximum/fmax

【毎日Python】Pythonで配列やリストを比較して最小値を取得する方法|numpy.minimum/fmin

【毎日Python】Pythonで欠損値のある配列の最大値・最小値を取得する方法|numpy.nanmax,nanmin