我有一个清单:

 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/

10-14 05:12