2013-11-25 70 views
10

我有一個包含一些元數據的文件,然後一些實際數據由包含標題的2列組成。在numpy中使用genfromtxt之前,我需要分離兩種類型的數據嗎?或者我可以以某種方式拆分數據?將文件指針放在標題上方的行尾,然後從那裏嘗試genfromtxt?由於 文件的格式如下所示:從文本文件中將數據讀入numpy數組

&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 
+0

因此,你根本不需要標題信息? – cm2

+0

我也想讀取標題信息。 :) – user3029076

+0

好吧,那麼你基本上解析頭分開;請參閱下面的答案。 – cm2

回答

20

如果你不想第一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() 
+0

我想我有這個想法,我需要使用csv.dictreader來讀取頭文件嗎? – user3029076

+0

我上面的內容會循環播放直到你敲上'n'行,然後停止。當它遍歷它們時,你可以做任何你想分析它們的東西。 – cm2

+0

我如何不導入最後n行? – Swift