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 陣列中。之後,我們建立了另一個陣列 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 陣列中。

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