我有一个用C语言编写的程序,该程序使输出文件如下调用orbits_toy_model.dat:
1.00000e-003 1.80000e-003 0.099799950033337 0.200099899983342
2.80000e-003 3.24000e-003 0.099439608731989 0.200279215634646
6.04000e-003 5.83200e-003 0.098790183270494 0.200600348178616
所以我在python中做了一个简单的程序来读取数据并保存在数组中:
from numpy import loadtxt
lines = loadtxt("C:/Users/Marta/OneDrive/Documents/Master/TFM/Code/EjemploIntegracion/prueba.dat", comments="#", delimiter=" ", unpack=False)
这适用于简单的数据文件:
1 2 3
4 5 6
但是当我运行实际的数据文件不起作用时,它说:
Traceback (most recent call last):
File "C:/Users/Marta/.PyCharmCE2018.2/config/scratches/scratch_7.py", line 10, in <module>
lines = loadtxt("C:/Users/Marta/OneDrive/Documents/Master/TFM/Code/EjemploIntegracion/orbits_toy_model.dat", comments="#", delimiter=" ", unpack=False)
File "C:\Users\Marta\AppData\Local\Programs\Python\Python37\lib\site-packages\numpy\lib\npyio.py", line 1101, in loadtxt
for x in read_data(_loadtxt_chunksize):
File "C:\Users\Marta\AppData\Local\Programs\Python\Python37\lib\site-packages\numpy\lib\npyio.py", line 1028, in read_data
items = [conv(val) for (conv, val) in zip(converters, vals)]
File "C:\Users\Marta\AppData\Local\Programs\Python\Python37\lib\site-packages\numpy\lib\npyio.py", line 1028, in <listcomp>
items = [conv(val) for (conv, val) in zip(converters, vals)]
File "C:\Users\Marta\AppData\Local\Programs\Python\Python37\lib\site-packages\numpy\lib\npyio.py", line 746, in floatconv
return float(x)
ValueError: could not convert string to float:
似乎我的文件格式不正确,是否有任何方法可以在python中使用此格式?
numpy.loadtxt
中的默认定界符为“任何空白”。由于您指定的是单个空格,因此将其用作分隔符,然后将所有其他空格作为值的一部分。
如果不使用numpy.loadtxt
参数,您将获得预期的值(其中“ test.dat”是您发布的数据):
delimiter