从文本文件中读取数据到numpy数组中

22

我有一个包含元数据和两列带标题的实际数据的文件。在使用numpy中的genfromtxt前,我是否需要将这两种类型的数据分开?还是可以将数据进行拆分并处理?将文件指针定位到标题上方的行末,尝试从那里开始使用genfromtxt怎么样?谢谢。

文件格式如下:

 &SRS
<MetaDataAtStart>
multiple=True
Wavelength (Angstrom)=0.97587
mode=assessment
background=True
issid=py11n2g
noisy=True
</MetaDataAtStart>
&END
Two Theta(deg)  Counts(sec^-1)
10.0    41.0
10.1    39.0
10.2    38.0
10.3    38.0
10.4    41.0
10.5    42.0
10.6    38.0
10.7    44.0
10.8    42.0
10.9    39.0
11.0    37.0
11.1    37.0
11.2    45.0
11.3    36.0
11.4    37.0
11.5    37.0
11.6    40.0
11.7    44.0
11.8    45.0
11.9    46.0
12.0    44.0
12.1    40.0
12.2    41.0
12.3    39.0
12.4    41.0

那么您完全不需要标题信息吗? - cm2
我确实想读取头信息。 :) - Nirvan
好的,那么你基本上需要单独解析头部;请参见我下面的回答。 - cm2
1个回答

45

如果你不想要前面的n行,请尝试使用以下代码(如果没有遗漏数据):

data = numpy.loadtxt(yourFileName,skiprows=n)

或者(如果存在缺失数据):

data = numpy.genfromtxt(yourFileName,skiprows=n)    
如果您想解析标头信息,可以返回并打开文件进行解析,例如:open
fh = open(yourFileName,'r')
for i,line in enumerate(fh):
    if i is n: break
    do_other_stuff_to_header(line)
fh.close()

我想我明白了,我需要使用csv.dictreader来读取标题吗? - Nirvan
我上面的代码会循环遍历每一行,直到遇到第 n 行就停止。在遍历过程中,你可以对每一行进行任何你想要的解析操作。 - cm2
如何不导入最后的 n 行? - Swift
loadtxt或genfromtxt对我不起作用。我得到了以下错误: File "/Users/vivekchowdary/opt/anaconda3/lib/python3.7/site-packages/numpy/lib/npyio.py", line 965, in loadtxtNameError: name 'os_PathLike' is not defined File "/Users/vivekchowdary/opt/anaconda3/lib/python3.7/site-packages/numpy/lib/npyio.py", line 1756, in genfromtxt replace_space=replace_space)NameError: name 'os_PathLike' is not defined - Vivek

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接