Python中numpy.loadtxt报错:无法将字符串转为浮点数
问题:读取带表头的txt文件时触发ValueError
问题重现
执行代码
import numpy as np Mean,Std = np.loadtxt('Mean_Std.txt',unpack=True) print([Mean]) print([Std])
目标文件Mean_Std.txt内容
Mean Std 41.96969696969697 0.22727272727273018 29.646464646464647 2.3263867473915276 24.444444444444443 2.836612913158948 22.424242424242426 3.2698851295313993 21.262626262626263 3.4897856988730362 20.80808080808081 4.038667556139951 20.606060606060606 4.342039357850636 20.606060606060606 4.342039357850636 20.606060606060606 4.342039357850636 20.606060606060606 4.342039357850636
报错信息
Traceback (most recent call last): File "C:\Users\USER\OneDrive - Technion\Research_Technion\Python_PNM\Sept17_2022\220\var_1_beta_1e-1\Test.py", line 19, in <module> Mean,Std = np.loadtxt('Mean_Std.txt',unpack=True) File "C:\Users\USER\anaconda3\lib\site-packages\numpy\lib\npyio.py", line 1146, in loadtxt for x in read_data(_loadtxt_chunksize): File "C:\Users\USER\anaconda3\lib\site-packages\numpy\lib\npyio.py", line 997, in read_data items = [conv(val) for (conv, val) in zip(converters, vals)] File "C:\Users\USER\anaconda3\lib\site-packages\numpy\lib\npyio.py", line 997, in <listcomp> items = [conv(val) for (conv, val) in zip(converters, vals)] File "C:\Users\USER\anaconda3\lib\site-packages\numpy\lib\npyio.py", line 734, in floatconv return float(x) ValueError: could not convert string to float: 'Mean'
期望输出
[array([41.96969697, 29.64646465, 24.44444444, 22.42424242, 21.26262626, 20.80808081, 20.60606061, 20.60606061, 20.60606061, 20.60606061])] [array([0.22727273, 2.32638675, 2.83661291, 3.26988513, 3.4897857 , 4.03866756, 4.34203936, 4.34203936, 4.34203936, 4.34203936])]
错误原因
np.loadtxt默认会尝试解析文件中所有行的内容为数值类型,但目标文件第一行是字符串表头('Mean'和'Std'),无法转换为浮点数,因此触发ValueError。
解决方案
在np.loadtxt中添加skiprows=1参数,跳过第一行的表头内容,仅解析后续的数值行:
import numpy as np # 跳过第一行表头,仅读取数值数据 Mean, Std = np.loadtxt('Mean_Std.txt', unpack=True, skiprows=1) print([Mean]) print([Std])
执行修改后的代码,即可得到你期望的输出结果。
内容的提问来源于stack exchange,提问作者user19977266
相关产品推荐
相关产品推荐

