我有一个文件,我只需要从中读取某些值到数组中。该文件按指定 TIMESTEP
值的行划分。我需要文件中最高 TIMESTEP
之后的数据部分。
这些文件将包含超过 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
基本代码
import numpy as np
with open('myfile.txt') as f_in:
data = np.genfromtxt(f_in, skip_header=3, comments=" ")
最佳答案
您可以在使用 genfromtxt()
的同时精确地使用 filter()
,因为 genfromtxt
接受生成器。
with open('myfile.txt', 'rb') as f_in:
lines = filter(lambda x: not x.startswith(b' '), f_in)
data = genfromtxt(lines, delimiter=',')
那么在您的情况下,您不需要skip_header
。
关于python - 使用 numpy.genfromtxt 进行过滤,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26008436/