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

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

Susan Sarandon
Susan Sarandonオリジナル
2024-12-25 03:59:08460ブラウズ

How to Efficiently Find the Indices of the Top N Largest Values in a NumPy Array?

NumPy 配列内の上位 N 値のインデックスの特定

NumPy 配列内の最大値のインデックスを取得するには、np.argmax 関数を使用します。ただし、複数の最大値のインデックスを取得する場合、この記事では別のアプローチを検討します。

最近の NumPy バージョン (1.8 以降) には、指定された条件に従ってインデックスを取得できる argpartition 関数が搭載されています。最大の n 個の要素のインデックスを取得するには、降順ソートを示す n に負の引数を指定してこの関数を使用します。

>>> a = np.array([9, 4, 4, 3, 3, 9, 0, 4, 6, 0]) # Sample array
>>> ind = np.argpartition(a, -4)[-4:] # Indices of top 4 largest elements

argsort とは異なり、argpartition は最悪の場合でも線形に動作しますが、戻り値は返されません。ソートされたインデックス。それらを並べ替えるには、パーティション化された配列で np.argsort を利用します:

>>> sorted_ind = ind[np.argsort(a[ind])]

または、NumPy の高度なインデックス作成機能を利用します:

>>> descending_order = np.argsort(a)[::-1] # Indices of elements in descending order
>>> top_n = descending_order[:n] # Top n indices

次のようなカスタマイズされたソリューションも存在します。

  • 配列を並べ替えて上位 n 個を選択する要素
  • 要素の反復比較とインデックス リストの更新
  • 条件付き代入による max() 関数の利用

以上がNumPy 配列内の最大上位 N 個の値のインデックスを効率的に見つけるにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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