将文件.dat中的数据保存到数组的问题

问题描述 投票:0回答:1

我有一个用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中使用此格式?

python c readfile
1个回答
1
投票
numpy.loadtxt中的默认定界符为“任何空白”。由于您指定的是单个空格,因此将其用作分隔符,然后将

所有其他空格作为值的一部分。

如果不使用numpy.loadtxt参数,您将获得预期的值(其中“ test.dat”是您发布的数据):

delimiter
© www.soinside.com 2019 - 2024. All rights reserved.