尝试同时对两个数组进行排名

时间:2019-06-27 16:44:03

标签: python numpy

我正在尝试对最坏情况进行排序,但我尝试比较两种不同类型的最坏情况。因此,我有两个单独的数组,我正在尝试将它们相互比较。

我使用了下面链接中的排序方法,当对一个数组而不是两个数组进行排序时,它可以工作。

Rank items in an array using Python/NumPy, without sorting array twice

CI_SUM_1 = numpy.array([2,1,7,23])
CI_SUM_2 = numpy.array([4,0,22,3])
order = CI_SUM_1.argsort() + CI_SUM_2.argsort() 
rank = order.argsort()
print(rank)

在上面的示例中,它是将等级加在一起(这很有意义),所以我得到了[0,2,1,3]。这不是我想要的。我正在尝试获得8个等级,以便可以看到各个等级。

预期结果应该类似于[2,1,5,7,4,0,6,3],这是两个数组并排放置时的排名。基本上我想要的是绝对排名,而不是每个数组的排名。因此,除非两个值相同,否则我只想要一个1。我不想要0-3的两个数组,我想要0-7的一个数组。

1 个答案:

答案 0 :(得分:0)

在使用CI_SUM_1之前,您需要concatenate CI_SUM_2argsort这两个数组,例如:

print (np.concatenate([CI_SUM_1,CI_SUM_2]).argsort().argsort())
array([2, 1, 5, 7, 4, 0, 6, 3], dtype=int64)