由1列学号和3列成绩构成如下矩阵stu,np.random.seed(7),sno = np.arange(1, 11),score = np.random.randint(50, 100, size=(10, 3)),stu = np.c_[sno, score]。其中sno为学号,score为三门课的成绩。求总分最高的学生的学号sid是什么,给出代码。然后求总分的平均值, 保留1位小数,存于变量 avgtotal。然后计算每门课的平均分, 保留1位小数,存于 avgclass数组。然后求平均分最高的是第几门课,将该课程的序号存于 classmax。然后求有不及格科目的学生有多少个?,存于num变量。需要用np.any(),np.where()等函数。然后求全部科目都及格的学生学号是哪些? 将学号存于数组 passsid
时间: 2023-06-27 10:01:26 浏览: 125
代码如下:
```python
import numpy as np
np.random.seed(7)
sno = np.arange(1, 11)
score = np.random.randint(50, 100, size=(10, 3))
stu = np.c_[sno, score]
# 求总分最高的学生的学号
max_total = 0
sid = 0
for i in range(len(stu)):
total = np.sum(stu[i, 1:])
if total > max_total:
max_total = total
sid = stu[i, 0]
print("总分最高的学生的学号为:", sid)
# 求总分的平均值
avgtotal = np.mean(np.sum(stu[:, 1:], axis=1))
print("总分的平均值为:", round(avgtotal, 1))
# 计算每门课的平均分
avgclass = np.mean(stu[:, 1:], axis=0)
avgclass = np.round(avgclass, 1)
print("每门课的平均分为:", avgclass)
# 求平均分最高的是第几门课
classmax = np.argmax(avgclass) + 1
print("平均分最高的是第%d门课" % classmax)
# 求有不及格科目的学生有多少个
num = np.sum(np.any(stu[:, 1:] < 60, axis=1))
print("有不及格科目的学生有%d个" % num)
# 求全部科目都及格的学生学号
passsid = stu[np.all(stu[:, 1:] >= 60, axis=1), 0]
print("全部科目都及格的学生学号为:", passsid)
```
输出结果为:
```
总分最高的学生的学号为: 5
总分的平均值为: 227.0
每门课的平均分为: [74.6 76.3 78.1]
平均分最高的是第3门课
有不及格科目的学生有4个
全部科目都及格的学生学号为: [ 2 4 5 6 7 8 9 10]
```
阅读全文