ホームページ >バックエンド開発 >Python チュートリアル >二重ソートを行わずに Python/NumPy で配列項目を効率的にランク付けするにはどうすればよいですか?

二重ソートを行わずに Python/NumPy で配列項目を効率的にランク付けするにはどうすればよいですか?

Susan Sarandon
Susan Sarandonオリジナル
2024-10-28 21:29:30910ブラウズ

How to Rank Array Items in Python/NumPy Efficiently Without Double Sorting?

二重ソートを行わずに 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 サイトの他の関連記事を参照してください。

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