ホームページ  >  記事  >  バックエンド開発  >  二重ソートを行わずに NumPy 配列内の要素を効率的にランク付けするにはどうすればよいですか?

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

DDD
DDDオリジナル
2024-10-27 04:35:30851ブラウズ

How to Efficiently Rank Elements in a NumPy Array Without Double Sorting?

二重ソートを行わない Python/NumPy での効率的な配列ランキング

データ分析と機械学習では、配列内の項目のランキングは一般的な操作です。ただし、これを達成するために配列を 2 回ソートするのは、計算が複雑になるため非効率的です。 NumPy を使用したより最適なアプローチは次のとおりです。

再ソートを 2 回行わずに配列内の項目をランク付けするには、次の手順に従います。

  1. argsort を 1 回適用して、配列要素の順序を取得します。
  2. 再度 argsort を使用して、手順 1 で取得した順序をランク付けします。

例:

<code class="python">import numpy as np

array = np.array([4, 2, 7, 1])

order = array.argsort()
ranks = order.argsort()

print("Original Array:", array)
print("Ordering:", order)
print("Ranks:", ranks)</code>

出力:

Original Array: [4 2 7 1]
Ordering: [3 1 2 0]
Ranks: [2 1 3 0]

Asご覧のとおり、ranks 配列は、二重の並べ替えを必要とせずに、元の配列内の各要素のランキングを提供します。

2D 以上の次元の配列の場合、並べ替えに使用する正しい軸を指定することが重要であることに注意してください。 argsort.

に axis 引数を提供します。

以上が二重ソートを行わずに NumPy 配列内の要素を効率的にランク付けするにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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