我有一個文件,我只需要將某些值讀入數組。該文件按指定TIMESTEP
值的行進行劃分。我需要文件中最高TIMESTEP
之後的部分數據。使用numpy.genfromtxt進行過濾
這些文件將包含超過200,000行,儘管我不知道哪一行是我需要的部分開始的任何給定的文件,我不知道最大的TIMESTEP
值是多少。
我假設如果我能找到最大的TIMESTEP
的行號,那麼我可以從該行開始導入。所有這些TIMESTEP
行都以空格字符開頭。關於我如何進行的任何想法都會有所幫助。
示例文件
headerline 1 to skip
headerline 2 to skip
headerline 3 to skip
TIMESTEP = 0.00000000
0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0
1, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0
2, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0
2, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0
TIMESTEP = 0.119999997
0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0
1, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0
2, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0
3, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0
TIMESTEP = 3.00000000
0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0
1, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0
1, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0
2, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0
Basic代碼
import numpy as np
with open('myfile.txt') as f_in:
data = np.genfromtxt(f_in, skip_header=3, comments=" ")
我會使用常規的Python文件讀取找到正確的TIMESTEP塊。 – hpaulj 2014-09-24 05:27:06
你甚至可能不需要'genfromtxt'從所需的行提取數據。或者將它們加載到一個'StringIO'緩衝區中,然後運行'genfromtxt'。 – hpaulj 2014-09-24 07:18:52
感謝提示@hpaulj。我會給你一個鏡頭。如果你想提供一個非常棒的基本例子。 :) – Carl 2014-09-24 08:35:58