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)

代码解释:

  1. 创建数据

    • 使用 np.arange(1, 11) 生成学号数组 sno
    • 使用 np.random.randint(50, 100, size=(10, 3)) 生成随机成绩数组 score,其中 size=(10, 3) 表示生成 10 行 3 列的矩阵。
    • 使用 np.c_[sno, score] 将学号和成绩按列组合成一个数组 stu
  2. 筛选条件

    • (stu[:, 1] >= 60) 表示筛选第一列成绩大于等于 60 的行。
    • (stu[:, 2] >= 60) 表示筛选第二列成绩大于等于 60 的行。
    • (stu[:, 3] >= 60) 表示筛选第三列成绩大于等于 60 的行。
    • 使用 & 运算符将三个条件连接起来,表示筛选所有三门课程成绩都大于等于 60 的行。
  3. 获取学号

    • stu[(stu[:, 1] >= 60) & (stu[:, 2] >= 60) & (stu[:, 3] >= 60), 0] 表示从符合条件的行中提取第一列(学号)数据。

输出结果:

[ 2  4  5  6  7  8  9 10]

结论:

该代码片段演示了如何使用 NumPy 数组操作进行数据筛选。通过使用逻辑运算符 & 和索引 [:, 1][:, 2][:, 3],我们可以高效地找出所有科目都及格的学生学号。

Python NumPy 数组操作:找出所有科目都及格的学生学号

原文地址: https://www.cveoy.top/t/topic/n6gz 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录