[Python]配列(Array)の最小値のインデックスを取得するには?

プログラミング・IT

どうも、ちょげ(@chogetarou)です。

配列(Array)の最小値のインデックスを取得する方法を紹介します。

スポンサーリンク

方法

インターフェース, インターネット, プログラム, ブラウザ, Www

リストとArray.arrayの場合

リスト(List)もしくはArray.arrayの最小値のインデックスを取得するには、index()メソッドとmax()関数を使います。

まず、リストもしくはArray.arrayからindex()メソッドを呼び出します。

index()メソッドの引数に、min()関数を指定します。

そして、min()関数の引数にリストもしくはArray.arrayを指定します。

array.index(min(array))

上記のindex()メソッドは、リストもしくはArray.arrayの最小値のインデックスを返します。

使用例

numbers = [1, 2, 3, -10, 4, 5]

min_index = numbers.index(min(numbers))

print(min_index) #3
print(numbers[min_index]) #-10

Numpy配列の場合

Numpyの配列(Array)の最小値のインデックスを取得する方法は、2つあります。

argmin()メソッド

1つは、argmin()メソッドを使う方法です。

具体的には、Numpyの配列からargmin()メソッドを呼び出します。

array.argmin()

argmin()メソッドは、呼び出したNumpy配列の最小値のインデックスを返します。

argmin()の結果は、多次元配列の形状を考慮しません。

もし、多次元配列の形状を考慮した結果を得たい場合は、numpyのnunravel_index()を使います。

np.unravel_index(array.argmin(), array.shape)

使用例

import numpy as np

nums = np.array([[1, 2, -100],
                 [4, -1000, 6], 
                 [7, 8, -10]])

min_num_index = nums.argmin()
min_dim_index = np.unravel_index(nums.argmin(), nums.shape)

print(min_num_index) #4
print(min_dim_index) #(1, 1)

numpy.argmin()

もう1つは、numpyのargmin()を使う方法です。

まず、numpyからargmin()を呼び出します。

そして、argmin()関数の引数にNumpy配列を指定します。

np.argmin(array)

argmax()関数は、引数に指定したNumpy配列の最小値のインデックスを返します。

Numpyのargmin()の結果は、多次元配列の形状を考慮しません。

もし、多次元配列の形状を考慮した結果を得たい場合は、numpyのnunravel_index()を使います。

np.unravel_index(np.argmin(array), array.shape)

使用例

import numpy as np

nums = np.array([[1, 2, -100],
                 [4, -1000, 6], 
                 [7, 8, -10]])

min_num_index = np.argmin(nums)
min_dim_index = np.unravel_index(np.argmin(nums), nums.shape)

print(min_num_index) #4
print(min_dim_index) #(1, 1)

まとめ

リストもしくはArray.arrayの最小値を取得するには、index()メソッドとmin()関数を使います。

Numpyの配列(Array)の最小値のインデックスを取得するには、次の2つの方法のいずれかを使います。

  • argmin()メソッドを使う方法
  • numpy.argmin()を使う方法

コメント

タイトルとURLをコピーしました