NumPy 配列のランク値

Muhammad Maisam Abbas 2023年1月30日
  1. numpy.argsort() メソッドを使用した NumPy ランク
  2. Python の scipy.stats.rankdata() 関数を使用した NumPy ランク
NumPy 配列のランク値

このチュートリアルでは、Python NumPy 配列内のデータをランク付けする方法を紹介します。

numpy.argsort() メソッドを使用した NumPy ランク

numpy.argsort() メソッドは、NumPy 配列の並べ替えに使用できるインデックスを取得するために使用されます。これらのインデックスは、配列内の各要素のランクとしても使用できます。numpy.argsort() メソッドは配列によって呼び出され、配列内の各要素のランクを別の配列の形式で返します。

import numpy as np

array = np.array([1, 8, 5, 7, 9])

temp = array.argsort()

ranks = np.empty_like(temp)

ranks[temp] = np.arange(len(array))
print(array)
print(ranks)

出力:

[1 8 5 7 9]
[0 3 1 2 4]

上記のコードの numpy.argsort() 関数を使用して、NumPy 配列 array 内の要素をランク付けしました。最初に、np.array() 関数を使用して配列を作成しました。次に、array.argsort() 関数を使用して、値を temp 配列内に格納しました。その後、array 内の各要素のランクを含む別の配列 ranks を作成しました。次に、array 内の各要素のランクを ranks[temp] = np.arange(len(array))ranks の各要素に割り当てました。

上記のコーディング例で説明した方法は問題なく機能しますが、numpy.argsort() 関数を 2 回使用すると、コードをさらに簡略化できます。この現象は、以下のコーディング例で示されています。

import numpy as np

array = np.array([1, 8, 5, 7, 9])

temp = array.argsort()

ranks = temp.argsort()
print(array)
print(ranks)

出力:

[1 8 5 7 9]
[0 3 1 2 4]

別の配列 ranks を作成し、array 内の各要素のランクを ranks = temp.argsort() を使用して ranks の各要素に割り当てました。

Python の scipy.stats.rankdata() 関数を使用した NumPy ランク

scipy.stats ライブラリ内の rankdata() 関数を使用して、NumPy 配列内の各要素のランクを取得することもできます。rankdata() 関数は、配列を入力パラメーターとして受け取り、配列内の各要素をランク付けし、同じ長さの別の配列の形式で結果を返します。

from scipy.stats import rankdata
import numpy as np

array = np.array([1, 8, 5, 7, 9])

ranks = rankdata(array)
print(array)
print(ranks)

出力:

[1 8 5 7 9]
[1. 4. 2. 3. 5.]

最初に、np.array() 関数を使用して配列を作成しました。次に、rankdata(array) 関数を使用して、値を ranks 配列内に格納しました。

Muhammad Maisam Abbas avatar Muhammad Maisam Abbas avatar

Maisam is a highly skilled and motivated Data Scientist. He has over 4 years of experience with Python programming language. He loves solving complex problems and sharing his results on the internet.

LinkedIn