我有一个清单:
somelist = [500, 600, 200, 1000]
I want to generate the rank order of that list:
rankorderofsomelist = [3, 2, 4, 1]
有some complex solutions,但有没有人有任何简单的方法?
最佳答案
既然您已经标记了这个问题,您可以使用scipy
:
>>> rankdata(somelist)
array([ 2., 3., 1., 4.])
>>> len(somelist) - rankdata(somelist)
array([ 2., 1., 3., 0.])
>>> len(somelist) - rankdata(somelist) + 1
array([ 3., 2., 4., 1.])
真正的优势在于,您可以指定希望如何处理角部病例:
>>> rankdata([0,1,1,2])
array([ 1. , 2.5, 2.5, 4. ])
>>> rankdata([0,1,1,2], method='min')
array([ 1., 2., 2., 4.])
>>> rankdata([0,1,1,2], method='dense')
array([ 1., 2., 2., 3.])
关于python - 排列数字列表,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/28800917/