栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

在Python中计算列表排名向量的有效方法

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

在Python中计算列表排名向量的有效方法

使用scipy,您正在寻找的功能是scipy.stats.rankdata:

In [13]: import scipy.stats as ssIn [19]: ss.rankdata([3, 1, 4, 15, 92])Out[19]: array([ 2.,  1.,  3.,  4.,  5.])In [20]: ss.rankdata([1, 2, 3, 3, 3, 4, 5])Out[20]: array([ 1.,  2.,  4.,  4.,  4.,  6.,  7.])

队伍从1开始,而不是0(如在你的例子),但话又说回来,就是这样

R
rank
功能的作品也是如此。

这是

scipy
的rankdata函数的纯Python等效项:

def rank_simple(vector):    return sorted(range(len(vector)), key=vector.__getitem__)def rankdata(a):    n = len(a)    ivec=rank_simple(a)    svec=[a[rank] for rank in ivec]    sumranks = 0    dupcount = 0    newarray = [0]*n    for i in xrange(n):        sumranks += i        dupcount += 1        if i==n-1 or svec[i] != svec[i+1]: averank = sumranks / float(dupcount) + 1 for j in xrange(i-dupcount+1,i+1):     newarray[ivec[j]] = averank sumranks = 0 dupcount = 0    return newarrayprint(rankdata([3, 1, 4, 15, 92]))# [2.0, 1.0, 3.0, 4.0, 5.0]print(rankdata([1, 2, 3, 3, 3, 4, 5]))# [1.0, 2.0, 4.0, 4.0, 4.0, 6.0, 7.0]


转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/641119.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号