H指数(h-index)的Python实现
H指数(h-index)是一种比较主流的科研评价方法,可用于评估研究人员的学术产出数量与学术产出水平。某人的h指数是指在其发表的N篇论文中,有h篇论文分别被引用了至少h次,其余N-h篇的引用次数均不超过h次。例如,张三发表了10篇论文,其中有5篇论文被引用次数大于等于5次,而没有6篇论文的引用次数大于等于6次,那么张三的H指数即为5。第一种方法:实现简单,但是列表较大的话,效率较低。‘’’输入一个
H指数(h-index)是一种比较主流的科研评价方法,可用于评估研究人员的学术产出数量与学术产出水平。某人的h指数是指在其发表的N篇论文中,有h篇论文分别被引用了至少h次,其余N-h篇的引用次数均不超过h次。例如,张三发表了10篇论文,其中有5篇论文被引用次数大于等于5次,而没有6篇论文的引用次数大于等于6次,那么张三的H指数即为5。
第一种方法:实现简单,但是列表较大的话,效率较低。
‘’’
输入一个列表,列表内容为某人的每篇文章的引用次数。
输出H指数值
‘’’
def Hindex(indexList):
indexSet = sorted(list(set(indexList)), reverse = True)
for index in indexSet:
#clist为大于等于指定引用次数index的文章列表
clist = [i for i in indexList if i >=index ]
#由于引用次数index逆序排列,当index<=文章数量len(clist)时,得到H指数
if index <=len(clist):
break
return index
test=[6,5,6,5,5,4,3,5,6,2,1]
print ‘H-index指数为:’,Hindex(test)
‘’’
列表test的输出为5
在列表test中,大于等于5的值的个数为7,而大于等于6的值为2
因此列表test的H指数为5
‘’’
第二种方法:首先利用Counter数据结构将引用次数和对应的文章数量建立一个映射,这样构建的字典长度为固定值,即引用次数的不重复个数。剩下的计算只用计算引用次数和计数即可。
from collections import Counter
def Hindex(indexList):
#构建引用次数与文章篇数的映射
HCounter = Counter(indexList)
#逆序字典,让引用次数高的引用次数排在前面
ReversedCounter = sorted(HCounter.iteritems(), reverse = True)
#分别生成 引用次数列表CounterKeys 和 该引用次数的文章列表CounterValues
CounterKeys = [i[0] for i in ReversedCounter ]
CounterValues = [i[1] for i in ReversedCounter]
#CounterKeys,CounterValues根据索引值一一对应,遍历索引值
for index in range(0,len(CounterValues)):
#sum(CounterValues[0:index+1])为大于等于某个索引值——CounterKeys[index]的所有的文章总和
if CounterKeys[index] <= sum(CounterValues[0:index+1]):
break
return CounterKeys[index]
test=[6,5,6,5,5,4,3,5,6,2,1]
print ‘H-index指数为:’,Hindex(test)

GitCode 天启AI是一款由 GitCode 团队打造的智能助手,基于先进的LLM(大语言模型)与多智能体 Agent 技术构建,致力于为用户提供高效、智能、多模态的创作与开发支持。它不仅支持自然语言对话,还具备处理文件、生成 PPT、撰写分析报告、开发 Web 应用等多项能力,真正做到“一句话,让 Al帮你完成复杂任务”。
更多推荐
所有评论(0)