You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python中如何根据学生姓名数组选取对应成绩数组行?

根据学生姓名选取对应成绩行的方法

你可以通过以下几种方式实现,先处理下二维的students数组让匹配更方便:

import numpy as np

students = np.array([['Hannah'],['Alonzo'], ['Antoinette'], ['Latasha'], ['Phil']])
grades = np.array([[86, 94], [83, 79], [97, 95], [90, 87], [73, 76]])

# 把二维的students转成一维数组,简化匹配操作
students_flat = students.flatten()

方法1:布尔索引(推荐,支持重名匹配)

直接生成布尔掩码来筛选成绩行,适合有重名学生的场景,会返回所有匹配的成绩:

target_name = 'Alonzo'
# 生成对应姓名的布尔掩码
name_mask = students_flat == target_name
# 用掩码提取成绩
matching_grades = grades[name_mask]
print(matching_grades)
# 输出:[[83 79]]

方法2:通过索引位置选取

如果确定姓名唯一,可以先找到索引再直接提取:

target_name = 'Alonzo'
# 获取目标姓名的索引(np.where返回的是元组,取第一个元素的第一个值)
target_idx = np.where(students_flat == target_name)[0][0]
# 按索引取成绩行
matching_grades = grades[target_idx]
print(matching_grades)
# 输出:[83 79]

额外说明

如果不想转一维数组,也可以直接用二维数组匹配,但需要把结果扁平化:

name_mask = (students == 'Alonzo').flatten()
matching_grades = grades[name_mask]

内容的提问来源于stack exchange,提问作者Adar Sheere

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.12 00:10:36