首页 > 解决方案 > 如何获取反向排序列表的索引?

问题描述

说我有数组:

A = [3, 3, 2, 2, 4]

排序列表(升序)的索引将是:

[2, 3, 0, 1, 4]

我想要反向排序列表(降序):

[4, 0, 1, 2, 3]

请注意,反向排序列表不是排序列表的直接反向。

我会使用 numpy; 但是,如果我这样做:

indices = np.argsort(A)[::-1]

# This gives: indices = [4, 1, 0, 3, 2]
# But I want: indices = [4, 0, 1, 2, 3]

因此,我如何获得我想要的反向排序列表的索引?或者有什么方法可以用 numpy 做到这一点?

谢谢!

标签: pythonarrayslistnumpysorting

解决方案


您可以np.argsort(..)在这里使用负数组,例如:

>>> np.argsort(-np.array([3, 3, 2, 2, 4]), kind='mergesort')
array([4, 0, 1, 2, 3])

或者从开始,您可以使用:

>>> np.argsort(-np.array([3, 3, 2, 2, 4]), kind='stable')
array([4, 0, 1, 2, 3])

推荐阅读