该题答案为:names[scores[:,subjects=='English'].argmax()]
简言之,利用多维数组切片和argmax函数
该函数是找出最大值的索引
以下是详细步骤
已知有该表(教材中的)
姓名 | Math | English | Python | Chinese | Art | Database | Physics |
王微 | 70 | 85 | 77 | 90 | 82 | 84 | 89 |
肖良英 | 60 | 64 | 80 | 75 | 80 | 92 | 90 |
方绮雯 | 90 | 93 | 88 | 87 | 86 | 90 | 91 |
刘旭阳 | 80 | 82 | 91 | 88 | 83 | 86 | 80 |
钱易铭 | 88 | 72 | 78 | 90 | 91 | 73 | 80 |
首先在jupyter中建立该表(以下np均代表numpy)
1,行名(以下1,2互换先后位置无影响)
names=np.array(['王微','肖良英','方绮雯','刘旭阳','钱易铭'])
2,列名
subjects=np.array(['Math', 'English', 'Python', 'Chinese','Art', 'Database', 'Physics'])
3,元组(成绩)
scores=np.array([[70, 85, 77, 90, 82, 84, 89],[60, 64, 80, 75, 80, 92, 90],
[90, 93, 88, 87, 86, 90, 91],[80, 82, 91, 88, 83, 86, 80],
[88, 72, 78, 90, 91, 73, 80]])
完成以上3个步骤就完成了在jupyter中创建该表
然后就是主题了
首先切片找出最高分
scores[:,subjects=='English']
[]中:意思是选中表中所有行,选全行时:不可省略;选全列时:可省略
subjects=='English'为布尔条件筛选
切片不会,可看我后续博客(看有没有时间来写了)
然后用函数点出该最大值的索引(行名或列名)
加上后缀.argmax()
然后就是答案names[scores[:,subjects=='English'].argmax()]