假设有一张成绩表记录了10名学生的语文、数学、英语、生物、历史这5门课的成绩,成绩范围均为50~100分。10名学生的学号分别为100、101、102、103、104、105、106、107、108、109。 要求: 利用NumPy数组完成以下操作 (6)按每名学生的成绩排序。 (7)计算每门课程的平均分、最高分和最低分。 (8)计算每名学生的最高分和最低分。 (9)查询最低分及相应的学生学号和课程。 (10) 查询最高分及相应的学生学号和课程。 (11) 语文、数学、英语、生物、历史这5门课程在总分中的占比分别为25%、25%、20%、15%、15%。如果总分为100分,则计算每名学生的总成绩。 (12)查询最高的3个总分。
时间: 2023-11-07 19:31:30 浏览: 138
好的,以下是对你的问题的回答:
(6)按每名学生的成绩排序。
```python
# 假设scores是一个10行5列的数组,每一列分别是语文、数学、英语、生物、历史的成绩
sorted_scores = np.sort(scores, axis=1)
```
(7)计算每门课程的平均分、最高分和最低分。
```python
# 计算平均分
mean_scores = np.mean(scores, axis=0)
# 计算最高分
max_scores = np.max(scores, axis=0)
# 计算最低分
min_scores = np.min(scores, axis=0)
```
(8)计算每名学生的最高分和最低分。
```python
# 计算每名学生的最高分
max_per_student = np.max(scores, axis=1)
# 计算每名学生的最低分
min_per_student = np.min(scores, axis=1)
```
(9)查询最低分及相应的学生学号和课程。
```python
# 找到最低分的位置
min_index = np.argmin(scores)
# 找到对应的学生学号和课程
student_id = min_index // 5 + 100
course = min_index % 5
# 输出结果
print("最低分为{},对应的学号为{},课程为{}".format(scores[min_index], student_id, course))
```
(10)查询最高分及相应的学生学号和课程。
```python
# 找到最高分的位置
max_index = np.argmax(scores)
# 找到对应的学生学号和课程
student_id = max_index // 5 + 100
course = max_index % 5
# 输出结果
print("最高分为{},对应的学号为{},课程为{}".format(scores[max_index], student_id, course))
```
(11)语文、数学、英语、生物、历史这5门课程在总分中的占比分别为25%、25%、20%、15%、15%。如果总分为100分,则计算每名学生的总成绩。
```python
# 计算每名学生的总成绩
total_scores = np.dot(scores, [0.25, 0.25, 0.2, 0.15, 0.15]) * 100
```
(12)查询最高的3个总分。
```python
# 找到最高的3个总分的位置
top3_index = np.argsort(total_scores)[-3:]
# 找到对应的学生学号
top3_student_id = top3_index + 100
# 输出结果
print("最高的3个总分分别为{},对应的学号为{}".format(total_scores[top3_index], top3_student_id))
```
阅读全文