假设有一张成绩表记录了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)计算每门课程的平均分、最高分和最低分。1 (8)计算每名学生的最高分和最低分。 (9)查询最低分及相应的学生学号和课程。 (10) 查询最高分及相应的学生学号和课程。 (11) 语文、数学、英语、生物、历史这5门课程在总分中的占比分别为25%、25%、20%、15%、15%。如果总分为100分,则计算每名学生的总成绩。 (12)查询最高的3个总分。
时间: 2023-07-10 20:14:56 浏览: 203
学科、姓名、分数。 分别计算每门学科分数最高的前三名,并显示名次。写入MySQL中。
这是一道重复的问题,我已经为您解答过,以下是之前的回答:
(1)使用随机数模拟学生成绩,并存储在数组中。
```python
import numpy as np
# 随机生成10位学生的各科成绩
score = np.random.randint(50, 101, size=(10, 5))
# 按行输出每个学生的成绩
print(score)
```
(2)查询学号为105的学生的英语成绩。
```python
# 查询学号为105的学生的英语成绩
english_score = score[5][2]
print(f"学号为105的学生的英语成绩为:{english_score}")
```
(3)查询学号为100、102、105、109的4位学生的语文、数学和英语成绩。
```python
# 查询学号为100、102、105、109的4位学生的语文、数学和英语成绩
selected_scores = score[[0, 2, 5, 9]][:, [0, 1, 2]]
print(f"学号为100、102、105、109的4位学生的语文、数学和英语成绩为:\n{selected_scores}")
```
(4)查询本于或等于90分的成绩和相应学生的学号。
```python
# 查询本于或等于90分的成绩和相应学生的学号
high_scores = np.where(score >= 90)
high_scores_info = list(zip(high_scores[0], high_scores[1]))
for info in high_scores_info:
print(f"学号为{info[0] + 100}的学生在{['语文', '数学', '英语', '生物', '历史'][info[1]]}中获得了{score[info]}分。")
```
(5)按各门课程的成绩排序。
```python
# 按各门课程的成绩排序
sorted_score = np.sort(score, axis=0)
print(f"按各门课程成绩排序后的成绩为:\n{sorted_score}")
```
(6)按每名学生的成绩排序。
```python
# 按每名学生的成绩排序
sorted_score = np.sort(score, axis=1)
print(f"按每名学生的成绩排序后的成绩为:\n{sorted_score}")
```
(7)计算每门课程的平均分、最高分和最低分。
```python
# 计算每门课程的平均分、最高分和最低分
avg_score = np.mean(score, axis=0)
max_score = np.max(score, axis=0)
min_score = np.min(score, axis=0)
for i in range(5):
print(f"在{['语文', '数学', '英语', '生物', '历史'][i]}中,平均分为{avg_score[i]}分,最高分为{max_score[i]}分,最低分为{min_score[i]}分。")
```
(8)计算每名学生的最高分和最低分。
```python
# 计算每名学生的最高分和最低分
max_scores = np.max(score, axis=1)
min_scores = np.min(score, axis=1)
for i in range(10):
print(f"学号为{i+100}的学生最高分为{max_scores[i]}分,最低分为{min_scores[i]}分。")
```
(9)查询最低分及相应的学生学号和课程。
```python
# 查询最低分及相应的学生学号和课程
min_score = np.min(score)
min_score_info = np.argwhere(score == min_score)
for info in min_score_info:
print(f"学号为{info[0] + 100}的学生在{['语文', '数学', '英语', '生物', '历史'][info[1]]}中获得了最低分{min_score}分。")
```
(10)查询最高分及相应的学生学号和课程。
```python
# 查询最高分及相应的学生学号和课程
max_score = np.max(score)
max_score_info = np.argwhere(score == max_score)
for info in max_score_info:
print(f"学号为{info[0] + 100}的学生在{['语文', '数学', '英语', '生物', '历史'][info[1]]}中获得了最高分{max_score}分。")
```
(11)语文、数学、英语、生物、历史这5门课程在总分中的占比分别为25%、25%、20%、15%、15%。如果总分为100分,则计算每名学生的总成绩。
```python
# 计算每名学生的总成绩
weights = np.array([0.25, 0.25, 0.2, 0.15, 0.15])
total_score = np.dot(score, weights) / np.sum(weights) * 100
for i in range(10):
print(f"学号为{i+100}的学生总成绩为{total_score[i]}分。")
```
(12)查询最高的3个总分。
```python
# 查询最高的3个总分
top3_indices = np.argsort(total_score)[-3:]
for i in top3_indices[::-1]:
print(f"学号为{i+100}的学生总成绩最高,为{total_score[i]}分。")
```
阅读全文