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

如何使用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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 14:54:03