使用 Python/NumPy 对数组中的项目进行排名,无需对数组进行两次排序

2024-01-17

我有一个数字数组,我想创建另一个数组来表示第一个数组中每个项目的排名。我正在使用 Python 和 NumPy。

例如:

array = [4,2,7,1]
ranks = [2,1,3,0]

这是我想出的最好的方法:

array = numpy.array([4,2,7,1])
temp = array.argsort()
ranks = numpy.arange(len(array))[temp.argsort()]

是否有更好/更快的方法可以避免对数组进行两次排序?


使用 argsort 两次,首先获取数组的顺序,然后获取排名:

array = numpy.array([4,2,7,1])
order = array.argsort()
ranks = order.argsort()

处理 2D(或更高维)数组时,请务必将轴参数传递给 argsort 以在正确的轴上排序。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用 Python/NumPy 对数组中的项目进行排名,无需对数组进行两次排序 的相关文章

随机推荐