如何使用scipy.stats.rankdata对列表降序排序获取对应排名
scipy.stats.rankdata 实现数值降序排名的方法
你可以通过以下两种简单方法实现需求,两种方法均完全兼容rankdata的并列排名处理规则(method参数的所有可选值都可正常使用):
方法1:对原始数组取负值后计算排名
rankdata默认升序排序,数值越小排名越高。将原始数值取负后,原本数值越大的数取负后结果越小,刚好可以直接得到降序对应的排名:
from scipy.stats import rankdata arr = [968, 233, 493, 5, 851, 224, 871, 396, 689, 862] desc_rank = rankdata(-arr) print(desc_rank) # 输出:[ 1. 8. 6. 10. 4. 9. 2. 7. 5. 3.]
方法2:用总长度+1减去升序排名
如果你已经提前计算好了升序排名,可以直接用数组总长度加1减去升序排名值,得到降序排名:
from scipy.stats import rankdata arr = [968, 233, 493, 5, 851, 224, 871, 396, 689, 862] asc_rank = rankdata(arr) desc_rank = len(arr) + 1 - asc_rank print(desc_rank) # 输出和方法1完全一致
内容的提问来源于stack exchange,提问作者Konstantin Kostanzhoglo
相关产品推荐
相关产品推荐

