2024-06-28 19:24:30 发布
网友
所以我有一个列组数组(从scipy.stats.rankdata获得):
scipy.stats.rankdata
1 2 5 3 4
编号是分配给相应索引的等级。现在我想把队伍向下移动2个位置。也就是说,我希望排名前2位的索引被分配到最后2位。因此,其他要素的等级必须提高
3 4 2 5 1
因此,具有前2个等级即index 2 and 4 having ranks 5 and 4的索引被赋予了后2个等级2 and 1。其他元素的等级随后增加
index 2 and 4 having ranks 5 and 4
2 and 1
我如何为任何顶级n实现这种转换
n
有一种方法:
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),高的数字会环绕到低端。在moding之前的-1将值下移1,因为模将与值0, 1, 2, ... len(ranks) - 1一起工作。修改后的+1将等级恢复到范围1, 2, ..., len(ranks)
len(ranks)
-1
0, 1, 2, ... len(ranks) - 1
1, 2, ..., len(ranks)
有一种方法:
通过将
n
添加到列组中并取结果模len(ranks)
,高的数字会环绕到低端。在moding之前的-1
将值下移1,因为模将与值0, 1, 2, ... len(ranks) - 1
一起工作。修改后的+1将等级恢复到范围1, 2, ..., len(ranks)
相关问题 更多 >
编程相关推荐