冗長な並べ替えを行わずに配列内の項目を効率的にランク付けするにはどうすればよいですか?

Mary-Kate Olsen
リリース: 2024-10-30 15:11:02
オリジナル
348 人が閲覧しました

How to Efficiently Rank Items in an Array without Redundant Sorting?

冗長な並べ替えを行わずに配列内のアイテムをランク付けする

数値の配列が与えられた場合、多くの場合、各アイテムのランク付けを決定する必要があります。従来、これには配列を 2 回ソートする必要があり、大規模なデータセットの場合は非効率的になる可能性があります。ただし、二重ソートを回避するより効率的なアプローチを採用すると、パフォーマンスが大幅に向上します。

代替方法の 1 つは、次のように NumPy の argsort 関数を利用します。

numpy.array([4,2,7,1])
temp = array.argsort()
ranks = numpy.arange(len(array))[temp.argsort()]
ログイン後にコピー

このアプローチは効果的ではありますが、依然として次のような処理が必要です。

Double Argsort を使用した最適化されたアプローチ

ランキング プロセスを最適化するには、より効率的な戦略として argsort を 2 回使用します。

array = numpy.array([4,2,7,1])
order = array.argsort()
ranks = order.argsort()
ログイン後にコピー

最初に配列をソートして順序を取得し、次に argsort をこの順序に適用することで、冗長なソートを行わずにアイテムのランクを決定できます。

この最適化されたアプローチは、特に大規模なデータセットの場合、効率の向上を示しています。追加の並べ替え操作が不要になるためです。さらに、多次元配列を操作する場合は、ソート軸を適切に制御するために、argsort で axis 引数を指定することを忘れないでください。

以上が冗長な並べ替えを行わずに配列内の項目を効率的にランク付けするにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート
私たちについて 免責事項 Sitemap
PHP中国語ウェブサイト:福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!