np.argmin()を使う。それぞれndarrayのメソッドとしても用意されている。Manualまた、np.where()を利用する方法もある。ここでは以下の内容について説明する。以下の一次元配列を例とする。numpy_argmax.pynp.argmax()の引数にndarrayを指定すると最大値となる要素のインデックスが返される。インデックスは0始まり。numpy_argmax.py最大値となる要素が複数ある場合は最初のインデックスのみが返される。多次元配列の場合として、二次元配列を例とする。numpy_argmax.py平坦化された状態のインデックスデフォルトでは、平坦化(一次元化)された状態でのインデックスが返される。numpy_argmax.pyndarrayはflatten()メソッドで平坦化できる。デフォルトでは平坦化(一次元化)された状態でのインデックスが返されていることが確認できる。numpy_argmax.py各列・各行の最大値のインデックス第二引数axisを指定すると、各軸に沿って最大値となるインデックスが返される。デフォルトはaxis=Noneで、上述のように平坦化された状態でのインデックスが返される。axis=0とすると各列ごとの最大値の行番号が返される。各列の最大値そのものはnp.max()でaxis=0とすると得られる。元の配列と見比べて位置を確認されたい。numpy_argmax.py同様にaxis=1とすると行ごとの最大値の列番号が返される。numpy_argmax.py全体の最大値のインデックス(座標)全体の最大値のインデックスを取得するにはnp.unravel_index()を使う。Manual第一引数indicesに平坦化(一次元化)した状態でのインデックス、第二引数shapeに元のndarrayの形状shapeを指定すると、元の形状におけるインデックスがタプルで返される。上述のようにnp.argmax()のデフォルトでは最大値の平坦化されたインデックスが返されるので、これをnp.unravel_index()の第一引数indicesに指定すればよい。0)は1行0列の要素が最大値であることを示している。得られたインデックスを[]に指定すると最大値が取得できていることが確認できる。numpy_argmax.pyなお、この方法だと最大値が複数ある場合に最初の要素のインデックスしか取得できない。np.where()を利用すると複数のインデックスを取得可能。ndarrayのargmax()メソッドここまでは関数np.argmax()の使い方を説明したが、配列ndarrayのargmax()メソッドとして使う場合も同様。np.max()にもndarrayに対応するメソッドmax()がある。numpy_argmax.py多次元配列の場合は目的によって引数axisを指定する。numpy_argmax.pynp.unravel_index()と組み合わせて使う場合も同じ。ndarrayのargmin()メソッドargmin()の場合も考え方はargmax()と同様。関数np.argmin()、配列ndarrayのargmin()メソッドがある。numpy_argmin.py二次元配列の場合。デフォルトは平坦化された状態でのインデックスが返される。numpy_argmin.py引数axisで行ごと・列ごとのインデックスを取得可能。numpy_argmin.pynp.unravel_index()を使う場合。上述のように、np.argmax()やnp.argmin()では、最大値や最小値が複数ある場合に最初の要素のインデックスしか取得できない。numpy_where_max_min.pynp.where()を利用すると複数の最大値や最小値のインデックスのリストを取得することができる。np.max()やnp.min()で最大値・最小値を取得し、その値と等しい要素のインデックスを抽出する。zip()による転置を組み合わせている。詳細は以下の記事を参照。