Numpy 配列内の要素を並べ替える方法 (例付き)
次のいずれかの方法を使用して、NumPy 配列内の要素の順序を計算できます。
方法 1: NumPy から argsort() を使用する
import numpy as np
ranks = np. array (my_array). argsort (). argsort ()
方法 2: SciPy の Rankdata() を使用する
from scipy. stats import rankdata
ranks = rankdata(my_array)
次の例は、次の NumPy 配列で各メソッドを実際に使用する方法を示しています。
import numpy as np
#define array of values
my_array = np. array ([3, 5, 2, 1, 9, 9])
#view array
print (my_array)
[3 5 2 1 9 9]
例 1: argsort() を使用して NumPy 配列内の要素を並べ替える
次のコードは、NumPy のargsort()関数を使用して配列要素を並べ替える方法を示しています。
#calculate rank of each item in array
ranks = np. array (my_array). argsort (). argsort ()
#view ranks
print (ranks)
[2 3 1 0 4 5]
結果には、元の配列内の各要素のランクが表示され、 0が最低値を表します。
このアプローチの利点は、追加のモジュールをロードする必要がないことですが、欠点は、 argsort()にはリンクを処理するメソッドが 1 つしかないことです。
デフォルトでは、 argsort() は序数メソッドを使用してリンクを処理します。これは、最初に表示されるリンクされた値に自動的に低いランクが与えられることを意味します。
例 2: Rankdata() を使用して NumPy 配列内の要素をランク付けする
次のコードは、SciPy のRankdata()関数を使用して配列要素をランク付けする方法を示しています。
from scipy. stats import rankdata
#calculate rank of each item in array
ranks = rankdata(my_array)
#view ranks
print (ranks)
array([3. , 4. , 2. , 1. , 5.5, 5.5])
結果は、元の配列内の各要素のランクを示し、 1が最小値を表します。
最小値を0で表す場合は、各値から 1 を引くだけです。
from scipy. stats import rankdata
#calculate rank of each item in array
ranks = rankdata(my_array) - 1
#view ranks
print (ranks)
[2. 3. 1. 0. 4.5 4.5]
デフォルトでは、 Rankdata()関数は、同順位のすべての値に平均ランクを割り当てます。
ただし、メソッド引数を使用して、別の方法でリンクを処理することができます。
たとえば、次のコードは、序数をリンク管理方法として使用する方法を示しています。
from scipy. stats import rankdata
#calculate rank of each item in array
ranks = rankdata(my_array, method=' ordinal ') - 1
#view ranks
print (ranks)
[2 3 1 0 4 5]
これは、NumPy のargsort()メソッドと同じ結果を生成します。
他のリンク管理方法には、 min 、 max 、およびDensity などがあります。
各メソッドについては、 SciPy ドキュメントを参照してください。
追加リソース
次のチュートリアルでは、NumPy で他の一般的なタスクを実行する方法について説明します。
NumPy配列から重複要素を削除する方法
浮動小数点数の NumPy 配列を整数に変換する方法
NumPy行列を配列に変換する方法