我正在尝试对最坏情况进行排序,但我尝试比较两种不同类型的最坏情况。因此,我有两个单独的数组,我正在尝试将它们相互比较。
我使用了下面链接中的排序方法,当对一个数组而不是两个数组进行排序时,它可以工作。
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的一个数组。
答案 0 :(得分:0)
在使用CI_SUM_1
之前,您需要concatenate
CI_SUM_2
和argsort
这两个数组,例如:
print (np.concatenate([CI_SUM_1,CI_SUM_2]).argsort().argsort())
array([2, 1, 5, 7, 4, 0, 6, 3], dtype=int64)