如何使用Python将非均匀格式文件读取为单个数组
非规范分隔文本转单个数组实现方案
核心思路
np.loadtxt要求每行元素数量严格一致,无法适配列宽/元素数量不统一的非CSV文本,优先采用逐行清洗提取数值再合并的方案实现。
实现代码
方案1:自行逐行清洗(兼容性最高)
直接提取文件中所有数值,拼接为单个数组:
import numpy as np all_values = [] # 替换为你的实际文件路径 with open("target_file.txt", "r", encoding="utf-8") as f: for line in f: # 按任意空白符分割,自动过滤首尾/连续空白 line_items = line.strip().split() # 仅保留可转换为数值的项 line_nums = [float(item) for item in line_items if item.replace('.', '', 1).isdigit()] all_values.extend(line_nums) # 最终得到的单个数组 result_arr = np.array(all_values)
方案2:固定宽度格式专用方案
如果你的文件是固定字符宽度的结构化文本(仅内容长度不一致导致视觉不对齐),可以直接用pandas的固定宽度读取接口实现:
import pandas as pd import numpy as np # 自动识别列宽读取 df = pd.read_fwf("target_file.txt", header=None) # 拍平为单个数组 result_arr = df.to_numpy().flatten()
额外说明
- 如果需要保留二维行列结构,只需要在逐行处理时对缺列的行补充
np.nan、对多列的行做截断,再将所有行的列表转numpy数组即可 - 两种方案都可以适配参考图中的非规范空白分隔文本格式,无需提前手动处理原文件
内容的提问来源于stack exchange,提问作者Declan
相关产品推荐
相关产品推荐

