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

使用numpy.genfromtxt加载数据报错及行数据拆分存储咨询

解决numpy读取带逗号小数文本文件的报错问题

问题核心:你的数据中小数用逗号(比如-0,0118)作为分隔符,但numpy的genfromtxt/loadtxt默认识别点(.)作为小数分隔符,因此无法将字符串转为浮点数,导致报错。

以下是几种可行的解决方法:

方法1:用genfromtxt的converters参数自定义转换

直接在读取时指定转换器,把逗号替换成点后转浮点数:

import numpy as np

def comma_to_float(s):
    # 先解码字节为字符串,替换逗号为点后转浮点数
    return float(s.decode('utf-8').replace(',', '.'))

# 读取完整数据
data = np.genfromtxt('Diode_A_Upcd.txt', delimiter=';', converters={0: comma_to_float, 1: comma_to_float})

# 将每行数据存储为单独数组
row_arrays = [row for row in data]

# 如果需要拆分x、y两列(结合unpack)
x, y = np.genfromtxt('Diode_A_Upcd.txt', unpack=True, delimiter=';', converters={0: comma_to_float, 1: comma_to_float})

方法2:手动逐行读取处理

先读取所有行,手动替换逗号后转换为数组:

import numpy as np

with open('Diode_A_Upcd.txt', 'r', encoding='utf-8') as f:
    lines = f.readlines()

row_arrays = []
for line in lines:
    # 去除换行符,按分号拆分数据
    parts = line.strip().split(';')
    # 替换逗号为点,转成numpy数组
    row = np.array([float(part.replace(',', '.')) for part in parts])
    row_arrays.append(row)

# 拆分x、y列的话
x = np.array([row[0] for row in row_arrays])
y = np.array([row[1] for row in row_arrays])

这两种方法都能解决字符串转浮点数的问题,同时满足你将每行数据存储为单独数组的需求,后续可直接用这些数组绘图。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.12 02:50:39