python numpy输出排名

时间:2020-09-07 18:57:20   收藏:0   阅读:83

python numpy排序后输出排名

问题:

假设某班的成绩为:

姓名 成绩 名次
小红 95
小黑 67
小白 58
小绿 82
小蓝 76
小橙 79
小可爱 99

请根据表格,输出对应的名次

程序:

numpy.argsort(a, axis=-1, kind=’quicksort’, order=None)

功能: 将矩阵a按照axis排序,并返回排序后的下标
参数: a:输入矩阵, axis:需要排序的维度
返回值: 输出排序后的下标

编写python程序如下,使用两次np.argsort()即可解决问题

import numpy as np 
grade = np.array([95,67,59,82,76,79,99]) # 源数据 
index = np.argsort(-grade) # 排序后的索引(负号为降序排列)
rank = np.argsort(index) # 名次
print(rank + 1) 

输出:

Out[24]:array([2, 6, 7, 3, 5, 4, 1], dtype=int64)

补全表格即可:

姓名 成绩 名次
小红 95 2
小黑 67 6
小白 58 7
小绿 82 3
小蓝 76 5
小橙 79 4
小可爱 99 1
评论(0
© 2014 mamicode.com 版权所有 京ICP备13008772号-2  联系我们:gaon5@hotmail.com
迷上了代码!