所以我有一系列排名(从scipy.stats.rankdata
获得):
1 2 5 3 4
no.s是分配给相应指数的等级。现在我想把队伍向下移动2个位置。也就是说,我希望将排名前2位的指数分配到最后2位。因此,其他因素必须增加等级。
3 4 2 5 1
因此,排名前2位的指数,即index 2 and 4 having ranks 5 and 4
被赋予最低2位2 and 1
。其他元素随后增加。
如何为所有排名靠前n
的排名实施此转变?
答案 0 :(得分:1)
以这种方式:
In [19]: ranks = np.array([1, 2, 5, 3, 4])
In [20]: n = 2
In [21]: new_ranks = (ranks + n - 1) % len(ranks) + 1
In [22]: new_ranks
Out[22]: array([3, 4, 2, 5, 1])
通过将n
添加到排名并将结果模数为len(ranks)
,高数字会回到低端。修改前-1
将值向下移动1,因为模数将使用值0, 1, 2, ... len(ranks) - 1
。修改后的+1会将等级恢复到范围1, 2, ..., len(ranks)
。