NumPy を使用した複数の最大値の検索
NumPy 配列は、np.argmax を使用した単一の最大値の検索など、統計演算のためのさまざまな関数を提供します。ただし、上位 N 個の最大値を特定する必要があるシナリオでは、np.argmax では満たせない特定の要件があります。
解決策: 新しい NumPy バージョンでの np.argpartition の使用
NumPy バージョン 1.8 以降では、np.argpartition 関数が解決策を提供します。この問題のために。この関数を使用すると、最大 N 個の要素のインデックスを取得できます。
たとえば、配列 [1, 3, 2, 4, 5] について考えてみましょう。 4 つの最大要素のインデックスを取得するには:
import numpy as np a = np.array([9, 4, 4, 3, 3, 9, 0, 4, 6, 0]) ind = np.argpartition(a, -4)[-4:] top_four = a[ind]
これにより、次の出力が得られます:
array([1, 5, 8, 0]) array([4, 9, 6, 9])
ここで、「ind」は 4 つの最大要素のインデックスを表し、 「top_four」は対応する値です。
順序付きインデックスの並べ替え出力
必要に応じて、対応する配列要素に対して np.argsort を呼び出してインデックスをさらに並べ替えることができます。
sorted_ind = ind[np.argsort(a[ind])]
これにより、上位 k 個の要素が確実に取得されます。ソートされた順序、時間計算量は O(n k log k) です。
以上がNumPy 配列内の上位 N 個の最大値のインデックスを見つけるにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。