Python NumPy 数组操作:找出所有科目都及格的学生学号
Python NumPy 数组操作:找出所有科目都及格的学生学号
假设由 1 列学号和 3 列成绩构成如下矩阵 stu,我们需要找出所有科目都及格的学生学号并将其存储在数组 passsid 中。
import numpy as np
np.random.seed(7)
sno = np.arange(1, 11) # 学号 (1,2,..., 10)
score = np.random.randint(50, 100, size=(10, 3)) # 三门课的成绩
stu = np.c_[sno, score] # 按列组合, np.c_[] 是列组合的便捷写法, 将学号和成绩拼接为一个数组
passsid = stu[(stu[:, 1] >= 60) & (stu[:, 2] >= 60) & (stu[:, 3] >= 60), 0]
print(passsid)
代码解释:
-
创建数据
- 使用
np.arange(1, 11)生成学号数组sno。 - 使用
np.random.randint(50, 100, size=(10, 3))生成随机成绩数组score,其中size=(10, 3)表示生成 10 行 3 列的矩阵。 - 使用
np.c_[sno, score]将学号和成绩按列组合成一个数组stu。
- 使用
-
筛选条件
(stu[:, 1] >= 60)表示筛选第一列成绩大于等于 60 的行。(stu[:, 2] >= 60)表示筛选第二列成绩大于等于 60 的行。(stu[:, 3] >= 60)表示筛选第三列成绩大于等于 60 的行。- 使用
&运算符将三个条件连接起来,表示筛选所有三门课程成绩都大于等于 60 的行。
-
获取学号
stu[(stu[:, 1] >= 60) & (stu[:, 2] >= 60) & (stu[:, 3] >= 60), 0]表示从符合条件的行中提取第一列(学号)数据。
输出结果:
[ 2 4 5 6 7 8 9 10]
结论:
该代码片段演示了如何使用 NumPy 数组操作进行数据筛选。通过使用逻辑运算符 & 和索引 [:, 1]、[:, 2]、[:, 3],我们可以高效地找出所有科目都及格的学生学号。
原文地址: https://www.cveoy.top/t/topic/n6gz 著作权归作者所有。请勿转载和采集!