python numpy:リストのうち最大値のインデックスを取得

記事公開日:
最終更新日:

This post is also available in: 英語

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

About
Amelt.net,LLCの創業者で、費用対効果の高い統合webマーケティングによりビジネスパートナーとして継続的にサポート。詳しいより。ブログの更新情報TwitterLinkedIn、またRSSfeedlyにてお知らせしていますのでフォローよろしくお願い致します。