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