Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/355.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在Python中使用包装列读取数据?_Python_Numpy_File Io_Formatting - Fatal编程技术网

如何在Python中使用包装列读取数据?

如何在Python中使用包装列读取数据?,python,numpy,file-io,formatting,Python,Numpy,File Io,Formatting,我正在尝试读取以下数据 0 3177 5 3.4275637990000E+33 7.7345239420000E+11 2.3294608630000E+21 2.0879655710000E+05 1.9252063604938E+06 2.0037575941018E+06-1.0000000000000E+00 0.0000000000000E+00 0.0000000000000E+00 1.1806662792899E+08 0.000000

我正在尝试读取以下数据

     0      3177         5
 3.4275637990000E+33 7.7345239420000E+11 2.3294608630000E+21 2.0879655710000E+05
 1.9252063604938E+06 2.0037575941018E+06-1.0000000000000E+00 0.0000000000000E+00
 0.0000000000000E+00 1.1806662792899E+08 0.0000000000000E+00 1.6258263880000E+00
 0.0000000000000E+00 3.0000000000000E+00 8.7143739363190E-06 1.1806108844692E+08
 1.5216398828085E-04 1.5621014411210E+00 0.0000000000000E+00 2.9999238008221E+00
 1.0979515673726E-05 1.1805809220990E+08 2.4154974448797E-04 1.5621006577022E+00
 0.0000000000000E+00 2.9996256593782E+00 2.1960663497032E-05 1.1803176057951E+08
 9.6633451293816E-04 1.5620942285096E+00 0.0000000000000E+00 2.9994037831384E+00
 2.7670327547614E-05 1.1801096239579E+08 1.5341282126072E-03 1.5620891863088E+00
 0.0000000000000E+00 2.9990524870828E+00 3.4865681847029E-05 1.1797792540807E+08
 2.4357001431448E-03 1.5620811953515E+00 0.0000000000000E+00 2.9984939557312E+00
 4.3934518613971E-05 1.1792547175142E+08 3.8674871654846E-03 1.5620681038247E+00
 0.0000000000000E+00 2.9976271324793E+00
其中前3行是标题,后面的6行是重复的6个变量,换句话说:

#Header line1
#Header line2
#Header line3
 var1 var2 var3 var4
 var5 var6 var1 var2
 var3 var4 var5 var6
 var1 var2 var3 var4
 var5 var6 var1 var2
 var3 var4 var5 var6
 var1 var2 var3 var4
 var5 var6 var1 var2
 var3 var4 var5 var6
 var1 var2 var3 var4
 var5 var6
在Python中,在单个变量中收集所有
var1
的最佳方法是什么

任何想法都值得赞赏


编辑:

请注意,数字并不总是用空格分隔。当右边的数字为负数时会发生这种情况,如第2列和第3列之间的第3行所示


始终相同的格式是
1.12345678890123e+12
,如果是负数,
-1.2345678901234E+12
。即点前1个数字,点后13个数字,指数中2个数字

我不确定这个解决方案总体上有多好,但它在您的情况下有效

首先,您可能应该分别处理文件的头和其余部分。这是数据部分

使用固定列文件读取器读取数据,跳过前三行:

import pandas as pd
import numpy as np
data = pd.read_fwf("yourfile", skiprows=2, widths=[20,20,20,20])
从数据帧中提取值,并将其展平:

values = data.values.reshape(1,-1)[0]
移除空单元格,重塑为六列:

values[~np.isnan(values)].reshape(-1,6)

我认为如果您指定单个字符的分隔符,
csv
模块可能会很有用space@Reedinationer-谢谢你的建议。但是,正如第3行所发生的那样,如果右边的数字是负数,则两个数字之间没有空格。我编辑了我的问题,添加了更多关于格式的信息。因此,如果每个数字都有一定数量的字符,只需阅读这些行,然后在这些位置切片即可!