Pythonで値が一番小さい要素のインデックスを探す

PythonのNumPyの行列の各要素から、最も値が小さい要素のインデックスを見つけてみます。

目次

  1. numpy.argmaxメソッドの使い方
  2. 最小の要素を検出する例

numpy.argmaxメソッドの使い方

index_array = numpy.argmin(a, [axis], [out])
変数 内容
a array_like 最小値の検索の対象となる行列。
axis int 省略可。規定値はNone。比較の方向。
out array 省略可。規定値はNone。行列に出力する場合は指定する。
index_array ndarray インデックスの行列。

最小値の要素のインデックスを返すメソッドです。

ndarrayだけでなく、リストでも使えます。

axisの指定の仕方が独特かな。

最小の要素を検出する例

2行3列の行列で試してみましょう。

>>> import numpy as np
>>> a = np.array([[0,5,2],[4,3,1]])
>>> a
array([[0, 5, 2],
       [4, 3, 1]])

>>> np.argmin(a)
0

>>> np.argmin(a, axis=0)
array([0, 1, 1])

>>> np.argmax(a, axis=1)
array([0, 2])

argmin(a)の場合は、1番目(インデックスが0)の要素が行列の中で最小の要素なので、0が返ってきました。

argmin(a, axis=0)の場合は、各列の要素を比較して各列内で最小の要素の列内でのインデックスが返ってきました。すなわち、1列目はインデックス0、2列目と3列目は2行目の方がそれぞれ小さいのでインデックス1が返ってきました。

argmin(a, axis=1)の場合は、各行内で最小の要素のインデックスが返ってきました。

axisは、一番外側の[]が0で、その入れ子が1で、さらにその入れ子が2というふうに考えれば良いでしょう。

広告

Pythonの数値計算カテゴリの投稿