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

Python读取dat文件带重复标识数值并转换为Numpy数组问题求解

报错原因

np.fromstring仅支持直接解析纯逗号分隔的数字字符串,你输入的内容包含3*5这类自定义重复语法,不属于标准数字格式,因此无法被正常识别,触发数据不匹配警告。

修复方案

你需要先预处理字符串解析*重复规则,再转换为numpy数组,以下代码同时兼容带[]和不带[]的输入格式:

import numpy as np

with open('trial.dat', 'r') as f:
    data = f.readlines()
    # 去除注释、首尾空格
    x = [(d+' ')[:d.find('#')].rstrip() for d in data][0]
    # 兼容[]格式,自动去除首尾括号
    x = x.strip('[]')
    # 拆分所有逗号分隔的单元
    units = x.split(',')
    res = []
    for unit in units:
        unit = unit.strip()
        if '*' in unit:
            # 拆分数字和重复次数
            num, repeat = map(int, unit.split('*'))
            res.extend([num]*repeat)
        else:
            # 普通数字直接添加
            res.append(int(unit))
    # 转numpy数组
    y = np.array(res, dtype=int)

运行后y的输出符合预期:[1 2 3 3 3 3 3]

输入格式说明
  • 完全可以使用[1,2,3*5]的格式编写.dat文件,上述代码已经适配了括号的自动处理逻辑
  • 也可以保留原有1,2,3*5的无括号格式,两种写法都能正常解析
  • 支持多组重复规则同时使用,例如2*3,4*2,5可解析为[2,2,2,4,4,5]

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 08:15:05