ホームページ >バックエンド開発 >Python チュートリアル >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
次のようなカスタマイズされたソリューションも存在します。
以上がNumPy 配列内の最大上位 N 個の値のインデックスを効率的に見つけるにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。