如何通过输入指定编码获取numpy数组对应行排除编码后的最大值
问题原因
你现有代码的核心问题有两个:
input()返回的是字符串类型,无法直接匹配数值类型的编码,需要先转换为整数numbers[choiceCode]是按下标索引取行,不是按第一列的编码值匹配行
修复后代码
import numpy as np # 读取csv数据 numbers = np.genfromtxt('numbers.csv', delimiter=',', skip_header=True) # 输入转整数 choiceCode = int(input('请输入编码:')) # 布尔索引筛选第一列匹配的所有行 match_rows = numbers[numbers[:, 0] == choiceCode] # 兼容编码不存在的场景 if len(match_rows) == 0: print("未查询到对应编码的记录") else: # 遍历所有匹配行输出最大值 for idx, row in enumerate(match_rows, 1): print(f"第{idx}条匹配行的最大值为:{np.max(row[1:])}")
补充说明
- 用布尔索引
numbers[:, 0] == choiceCode筛选行,适配同一个编码对应多条记录的场景(比如你的示例中编码5453就对应2行数据) row[1:]直接取排除第一列后的所有值,不需要写死区间范围,后续表格新增列无需修改代码
内容的提问来源于stack exchange,提问作者kr003
相关产品推荐
相关产品推荐

