簡體   English   中英

NumPy genfromtxt-跳過以特定數字開頭的行

[英]NumPy genfromtxt - skipping rows that start with specific number

我有一個文件,其中第一列有一個整數,該整數告訴它是否是元數據數據-以0開頭的行是元數據,並且其中的列數不是固定的,而其他任何整數則表示數據行:

   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()來做到這一點嗎?

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)測試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')

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM