2016-02-23 79 views
0

我有一個文件,其中的第一列有一個整數,它告訴它是否爲元數據的數據 - 以0開頭的行是元數據,並且列中的列數不是固定的,而任何其他整數候數據線:NumPy genfromtxt - 跳過以特定數字開頭的行

0 -1.0000E+02 2.0000E+03 -1.0000E+03 
    0 NDIM= 3 IPS = 1 
    1  3 0 0 1.8279163801E+001 2.1982510269E-002 

我想以只從一個非零整數啓動線讀出的數據使用numpy的,我能和numpy的做.genfromtxt()?

回答

1

np.genfromtxt可以接受迭代器作爲其第一個參數。這樣你就可以建立一個發電機表達,以產生正好需要的行:

import re 
lines = (line for line in open('data', 'rb') if re.match(r'^\s*[1-9]', line)) 

然後

In [61]: np.genfromtxt(lines) 
Out[61]: 
array([ 1.  , 3.  , 0.  , 0.  , 
     18.2791638 , 0.02198251]) 

re.match(r'^\s*[1-9]', line)測試如果行有空白,接着1和9。如果非之間的數字開始零整數可以從0開始,那麼你可以改爲使用

lines = (line for line in open('data', 'rb') if line.split(None, 1)[0].lstrip('0') in '123456789') 
相關問題