如何将带逗号的科学计数数字符串转为浮点数以绘制DSC数据?
解决DSC数据读取时的字符串转浮点数问题
问题核心是你的数据文件用**逗号(,)作为小数点分隔符,但np.loadtxt默认只识别点(.)**作为小数点,导致解析失败。以下是两种实用解决方法:
方法一:用numpy的converters参数自定义转换
写一个简单的转换函数,把字符串里的逗号替换成点再转浮点数,然后指定给需要处理的列(列索引从0开始,这里t、Heatflow、Tr对应列1、2、3):
import numpy as np def comma_to_float(s): # numpy加载时会传字节串,先解码再替换 return float(s.decode('utf-8').replace(',', '.')) filename = 'HA_A001_PBS.txt' # 对列1、2、3应用转换函数,列0是整数无需处理 data = np.loadtxt(filename, skiprows=2, converters={1: comma_to_float, 2: comma_to_float, 3: comma_to_float}) Temp = data[:,3] HeatFlow = data[:,2]
方法二:用pandas简化读取(推荐)
pandas的read_csv原生支持指定小数点分隔符,处理这类带空格分隔的表格数据更省心:
import pandas as pd filename = 'HA_A001_PBS.txt' # sep='\s+'表示用任意数量空白字符分隔列,decimal=','指定逗号为小数点 df = pd.read_csv(filename, skiprows=2, sep='\s+', decimal=',') # 提取数据转成numpy数组(按需使用) Temp = df['Tr'].values HeatFlow = df['Heatflow'].values
内容的提问来源于stack exchange,提问作者Hugo Aalders
相关产品推荐
相关产品推荐

