如何获取二维NumPy数组中每个子数组的最后一个元素?(Python)
解决NumPy数组最后一列元素丢失的问题
问题根源
你写的aray[:,-1]是获取二维数组每一行最后一个元素的正确写法,出现元素/行丢失的问题,大概率是np.genfromtxt读取数据时出了问题,比如:
- 输入文件最后一行是空行
- 最后一行数据格式不匹配(列数不足、值类型错误)
- 读取参数默认行为过滤了异常行
排查与解决步骤
先验证读取后的数组状态
先打印数组的形状和内容,确认是否真的读到了6行数据:import numpy as np aray = np.genfromtxt(input_file, skip_header=1) # 检查数组形状,正常应该输出 (6, 列数) print(f"数组形状: {aray.shape}") # 打印完整数组,查看最后一行是否存在或是否为NaN print(aray)针对读取问题调整参数
- 如果是最后一行是空行:添加
skip_footer=1跳过空行aray = np.genfromtxt(input_file, skip_header=1, skip_footer=1) - 如果是最后一行数据不完整:用
filling_values填充缺失值,同时关闭错误抛出aray = np.genfromtxt(input_file, skip_header=1, filling_values=np.nan, invalid_raise=False) - 换用更稳健的读取方式(比如pandas),对不规则数据兼容性更好:
import pandas as pd df = pd.read_csv(input_file, skiprows=1) aray = df.to_numpy()
- 如果是最后一行是空行:添加
重新提取最后一列
确认数组正确读取后,再执行提取操作:price_array = aray[:, -1] # 验证元素数量,应该等于6 print(f"最后一列元素数量: {len(price_array)}")
内容的提问来源于stack exchange,提问作者Vargensson
相关产品推荐
相关产品推荐

