冗長な並べ替えを行わずに配列内のアイテムをランク付けする
数値の配列が与えられた場合、多くの場合、各アイテムのランク付けを決定する必要があります。従来、これには配列を 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 サイトの他の関連記事を参照してください。