Python多维数组,已知多科成绩求英语成绩最高的学生名

该题答案为: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()]

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值