NumPy 数组中的排名值

Muhammad Maisam Abbas 2023年1月30日 2021年7月4日
  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