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 陣列中。之後,我們建立了另一個陣列 ranks,其中包含 array 中每個元素的排名。然後,我們使用 ranks[temp] = np.arange(len(array)) 將 array 中每個元素的排名分配給 ranks 的每個元素。
上述編碼示例中討論的方法工作正常,但我們可以使用 numpy.argsort() 函式兩次進一步簡化我們的程式碼。下面的編碼示例演示了這種現象。
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,並使用 ranks = temp.argsort() 將 array 中每個元素的排名分配給 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