ホームページ >バックエンド開発 >Python チュートリアル >NumPy 配列内の上位 N 個の最大値のインデックスを見つけるにはどうすればよいですか?

NumPy 配列内の上位 N 個の最大値のインデックスを見つけるにはどうすればよいですか?

Susan Sarandon
Susan Sarandonオリジナル
2024-12-06 01:38:11876ブラウズ

How Can I Find the Indices of the Top N Maximum Values in a NumPy Array?

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 サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。