我有一个文件,我只需要将某些值读入数组。该文件按指定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