Python获取list第二大的数及其索引

        处理实验结果的时候想返回一个最大的指标,但是数据集里存在满分指标作为对比,所以在实际试验指标不能满分的前提下,实际上最大的指标是排名第二的,但不知道满分指标的具体个数,所以不能使用传统的排序(快排、选择、,冒泡)获取第二名。

解决思路:假设指标范围为1~5。遍历一遍(我用了tolist()把ndarray转换成了list再进行操作)list,把所有满分指标修改或剔除,然后第二次遍历新list,找到最大值及其索引值。

代码:

 pf = result.flatten().tolist()  #先变成一维,再转换为list
 for i in range(pf.count(5)):     #获取最大值(5)出现的次数
     max_index = pf.index(5)      #获取首次最大值(5)出现的坐标
     pf[max_index]=3              #修改最大值(5)为一个较小值(3)
 print("max_score is %f,index is %d" % (max(pf),pf.index(max(pf))))

你可能感兴趣的:(python)