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
配列内に格納しました。
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