Numpy の配列に最大値が複数。インデックスを全て取得したい – Python

Numpy の ndarray 配列や Series で最大値、最小値の場所を知りたければ argmax、argmin メソッドを使います。ただし、最大、最小値がもし複数あった場合、argmax、argmin は先頭のインデックスを1つだけ返しておわりです。1つじゃなく、すべて知りたい場合は max、min と where を組み合わせます。

最大値のインデックス

argmax が返してくるのは先頭のインデックスだけ。

すべて知りたければ

data == data.max() の結果を where に渡します。

where の役目

data == data.max() の部分は True、False の配列を戻します。

where は、配列を調べて値が True のインデックスを返します。
つまり、data.max() と値が等しい場所をまとめて知らせてくれるわけです。

最小値のインデックス

括弧のなかを min にするだけです。

Seriesの場合

Series も同様です。

コメントはお気軽に