python - 使用 numpy.genfromtxt 进行过滤

标签 python numpy

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

相关文章:

java - 将日期时间字符串转换为毫秒 UNIX 时间戳

python - 将 numpy 数组从值转换为索引

python - Numpy 减法精度

python - 有哪些使用有限元求解结构二维和三维框架的 Python 库?

python - 有没有一些优雅的方法来操纵我的 ndarray

python - Django inspectdb 'unique_together' 指的是不存在的字段(2015)

python - 在pylab中更改图形窗口标题

python - 为什么在手动拆分测试和训练数据时会得到不同的结果,而不是使用 Python 拆分函数

python - 在 OSX 上更新 Python 和包

c - 使用 cblas_sgemm 执行复杂的矩阵操作以进行乘法