NumPy配列内のN個の最大値のインデックスを取得する方法
NumPyを使用して、配列内のN個の最大値のインデックスを取得する方法は、argsort()
メソッドを使用することです。このメソッドは、配列内の要素を昇順に並べ替えたときのインデックスを返します。これを利用して、最大値のインデックスを取得することができます。
具体的な例と結果
import numpy as np # サンプル配列 arr = np.array([10, 5, 8, 20, 15]) # 最大値のインデックスを取得する n = 3 max_indices = arr.argsort()[-n:][::-1] print(max_indices)
上記の例では、配列arr
から最大の3つの値のインデックスを取得しています。最初にargsort()
メソッドを使用して配列を昇順に並び替え、その後スライスを使って最大値のインデックスを取得しています。
別の例
import numpy as np # 別のサンプル配列 arr2 = np.array([30, 25, 40, 15, 20]) # 最大値のインデックスを取得する n = 2 max_indices2 = arr2.argsort()[-n:][::-1] print(max_indices2)
上記の例では、別の配列arr2
から最大の2つの値のインデックスを取得しています。同様に、argsort()
メソッドを使用して最大値のインデックスを取得しています。
応用例
import numpy as np # 応用例:2次元配列 arr_2d = np.array([[1, 5, 3], [8, 2, 7], [4, 6, 9]]) # 各行ごとに最大値のインデックスを取得する max_indices_2d = np.argsort(arr_2d, axis=1)[:, -1] print(max_indices_2d)
上記の例では、2次元配列arr_2d
から各行ごとに最大値のインデックスを取得しています。ここではaxis=1
を指定して各行に対してソートして最大値のインデックスを取得しています。
NumPy配列内のN個の最大値のインデックスを取得するには、numpy.argsort()関数を使用します。この関数は、配列内の要素を昇順に並べ替えたときのインデックスを返します。そのため、配列をargsort()関数に渡すことで、最大値のインデックスを取得できます。N個の最大値を取得する場合は、argsort()関数の戻り値をスライスして上位N個のインデックスを取得します。
例えば、以下のコードは、NumPy配列arr内の最大値のインデックスを取得する例です。
import numpy as np
arr = np.array([10, 5, 8, 20, 15])
n = 2max_indices = np.argsort(arr)[-n:]
print(max_indices)