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

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

目次

  1. numpy.argmaxメソッドの使い方
  2. 最大値検出の実施例

numpy.argmaxメソッドの使い方

index_array = numpy.argmax(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.argmax(a)
1

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

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

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

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

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

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

広告

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