1.假设有一张成绩表记录了10名学生的语文、数学、英语、生物、历史这5门课的成绩,成绩范围均为50~100分。10名学生的学号分别为100、101、102、103、104、105、106、107、108、109。利用numpy完成一下操作: (1)使用随机数模拟学生成绩,并存储在数组中。 (2)查询学号为105的学生的英语成绩。 (3)查询学号为100、102、105、109的4位学生的语文、数学和英语成绩。 (4)查询大于或等于90分的成绩和相应学生的学号。 (5)按各门课程的成绩排序。 (6)按每名学生的成绩排序。 (7)计算每门课程的平均分、最高分和最低分。 (8)计算每名学生的最高分、最低分。 (9)查询最低分及相应的学生学号和课程。 (10)查询最高分及相应的学生学号和课程。 (11)语文、数学、英语、生物、历史这5门课程在总分中的占比分别为25%、25%、20%、15%、15%。如果总分位100分,则计算每名学生的总成绩。 (12)查询最高的3个总分。
时间: 2023-12-16 21:22:52 浏览: 154
学科、姓名、分数。 分别计算每门学科分数最高的前三名,并显示名次。写入MySQL中。
好的,让我来回答你的问题:
首先,针对你的问题,需要使用Python语言和NumPy库进行编程。下面是对应的代码实现和注释解释:
```python
import numpy as np
# (1) 使用随机数模拟学生成绩,并存储在数组中。
grades = np.random.randint(50, 101, (10, 5))
# (2) 查询学号为105的学生的英语成绩。
eng_grade = grades[5, 2]
print("学号为105的学生的英语成绩为:", eng_grade)
# (3) 查询学号为100、102、105、109的4位学生的语文、数学和英语成绩。
selected_grades = grades[[0, 2, 5, 9]][:, :3]
print("学号为100、102、105、109的学生的语文、数学和英语成绩为:\n", selected_grades)
# (4) 查询大于或等于90分的成绩和相应学生的学号。
high_grades = np.argwhere(grades >= 90)
print("大于或等于90分的成绩及相应学生的学号为:\n", high_grades)
# (5) 按各门课程的成绩排序。
sorted_grades = np.sort(grades, axis=0)[::-1]
print("按各门课程的成绩排序为:\n", sorted_grades)
# (6) 按每名学生的成绩排序。
sorted_grades = np.sort(grades, axis=1)[::-1]
print("按每名学生的成绩排序为:\n", sorted_grades)
# (7) 计算每门课程的平均分、最高分和最低分。
mean_grades = np.mean(grades, axis=0)
max_grades = np.max(grades, axis=0)
min_grades = np.min(grades, axis=0)
print("每门课程的平均分为:", mean_grades)
print("每门课程的最高分为:", max_grades)
print("每门课程的最低分为:", min_grades)
# (8) 计算每名学生的最高分、最低分。
max_grades = np.max(grades, axis=1)
min_grades = np.min(grades, axis=1)
print("每名学生的最高分为:", max_grades)
print("每名学生的最低分为:", min_grades)
# (9) 查询最低分及相应的学生学号和课程。
lowest_grade = np.min(grades)
lowest_idx = np.argwhere(grades == lowest_grade)
print("最低分为:", lowest_grade)
print("相应的学生学号和课程为:")
for idx in lowest_idx:
print("学号为{}的学生的{}成绩为{}".format(idx[0]+100, ['语文', '数学', '英语', '生物', '历史'][idx[1]], grades[idx[0], idx[1]]))
# (10) 查询最高分及相应的学生学号和课程。
highest_grade = np.max(grades)
highest_idx = np.argwhere(grades == highest_grade)
print("最高分为:", highest_grade)
print("相应的学生学号和课程为:")
for idx in highest_idx:
print("学号为{}的学生的{}成绩为{}".format(idx[0]+100, ['语文', '数学', '英语', '生物', '历史'][idx[1]], grades[idx[0], idx[1]]))
# (11) 计算每名学生的总成绩。
weights = [0.25, 0.25, 0.2, 0.15, 0.15]
total_grades = np.dot(grades, weights)
print("每名学生的总成绩为:", total_grades)
# (12) 查询最高的3个总分。
top3_idx = np.argsort(total_grades)[::-1][:3]
print("最高的3个总分为:")
for idx in top3_idx:
print("学号为{}的学生的总成绩为{}".format(idx+100, total_grades[idx]))
```
希望这个答案能够帮到你!
阅读全文