使用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
相关产品推荐
相关产品推荐

