ホームページ >バックエンド開発 >Python チュートリアル >二重ソートを行わずに Python/NumPy で配列項目を効率的にランク付けするにはどうすればよいですか?
二重ソートを行わずに Python/NumPy で配列項目のランク付けを高速化
データ分析や機械学習では、多くの場合、項目を順序付けする必要があります。値に基づく配列。ランキング用の配列の二重ソートは時間がかかる場合があります。
初期アプローチ
一般的な方法の例を以下に示します。
<code class="python">import numpy as np # Sample array array = np.array([4, 2, 7, 1]) # Temporary array for sorting temp = array.argsort() # Rank computation ranks = np.arange(len(array))[temp.argsort()]</code>
このアプローチ2 つのソート操作が含まれるため、複雑さが増します。
最適化されたソリューション
二重ソートを避けるために、NumPy の argsort() 関数を 2 回利用できます。
<code class="python">array = np.array([4, 2, 7, 1]) # First argsort to obtain element order order = array.argsort() # Second argsort to obtain ranking ranks = order.argsort()</code>
説明
まず、argsort()を使って配列要素の順序を取得します。次に、結果の順序に argsort() を再度適用し、ランキングを取得します。
結論
この最適化された手法により、配列項目のランキング速度が大幅に向上します。不必要な並べ替えを回避します。高次元配列の場合、argsort の axis 引数を使用して並べ替えの軸を指定します。
以上が二重ソートを行わずに Python/NumPy で配列項目を効率的にランク付けするにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。