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