This post is also available in: English-US (英語)
pythonのライブラリnumpyを利用していて、特定のリストの中の最大値と、そのインデックスを取得する方法について、備忘録的にメモを書いています。
ハマりそうなポイントとして、 np.where を使って最大値のインデックスを取得すると、tuple(タプル)形式で値が返ってきます。tuple(タプル)は、リスト(可変)と違ってイミュータブル(可変ではない)なので、若干扱いにくい場合があります。
なので、その後の処理内容によっては、最大値のインデックスを取得は np.argmax を使った方が良いかもしれません。一次元配列でなく、多次元配列の場合には flatten() とか使って平坦化したりします。
import numpy as np # サンプルリスト samplelist = [3, 1, 2, 8, 4] # リストのうち、最大値を取得 value_of_max = np.max(samplelist) print(value_of_max) # 8 # np.argmax にて、リストのうち、最大値のインデックスを取得 index_of_max_01 = np.argmax(samplelist) print(index_of_max_01) # 3 # np.where にて、リストのうち、最大値のインデックスを取得 index_of_max_02 = np.where(samplelist == value_of_max) print(index_of_max_02) # (array([3], dtype=int64),) print(type(index_of_max_02)) # <class 'tuple'> print(list(index_of_max_02)) # [array([3], dtype=int64)] print(list(index_of_max_02)[0][0]) # 3