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

如何在Python中将单行格式文本文件转换为二维数组

解决方法

你的问题在于直接将读取到的字符串行转为numpy数组时,numpy只会把它当作单一的字符串元素存储,并没有解析字符串内部的数值结构。以下两种方法可以将文本内容转换为预期的二维numpy数组,且支持任意规整的二维数组格式:

方法1:手动字符串解析

通过字符串分割和类型转换,一步步解析出数值结构:

import numpy as np

with open("file.txt", "r") as f:
    # 读取单行并去除首尾空白(含换行符)
    raw_line = f.read().strip()
    # 去除首尾的[],再按'],['分割成每个子数组的字符串
    sub_arr_strs = raw_line.strip('[]').split('],[')
    # 遍历每个子串,分割为整数并组成列表
    data_list = [list(map(int, s.split(','))) for s in sub_arr_strs]
    # 转换为numpy二维数组
    result_arr = np.array(data_list)
    
print(result_arr)
print(result_arr.dtype)

方法2:利用ast.literal_eval解析(更简洁)

借助Python的ast模块直接将字符串解析为Python列表,再转numpy数组:

import numpy as np
import ast

with open("file.txt", "r") as f:
    raw_line = f.read().strip()
    # 将原字符串包装为合法的Python二维列表格式
    formatted_str = f"[{raw_line}]"
    # 解析为Python列表
    data_list = ast.literal_eval(formatted_str)
    # 转换为numpy数组
    result_arr = np.array(data_list)
    
print(result_arr)
print(result_arr.dtype)

两种方法都能输出你预期的二维数组结构,且自动识别数值类型(如int64)。如果你的实际数据包含浮点数,只需把map(int, ...)改成map(float, ...)即可适配。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.26 07:45:33