读取文本文件通过递归跳过行我有一个数据文件是这样的,使用numpy的
# some text
# some text
# some text
100000 3 4032
1 0.0125 101.27 293.832
2 0.0375 108.624 292.285
3 0.0625 84.13 291.859
200000 3 4032
4 0.0125 101.27 293.832
5 0.0375 108.624 292.285
6 0.0625 84.13 291.859
300000 3 4032
7 0.0125 101.27 293.832
8 0.0375 108.624 292.285
9 0.0625 84.13 291.859
........
我想,以作进一步处理阵列读取这些数据。不过,我只需要四栏数据。因此,我必须跳过三列数据或将它们存储在不同的数组中。由于这个数据文件很大,并且以相同的方式重复,如果我可以一次阅读这些数据文件,它会更容易。 我已经尝试numpy.genfromtxt(文件)与itertools.islice(文件,4,7),但无法找到一种方法来存储所有的四列数据到一个单一的数组(由于其中的三列数据)。 任何有关这方面的帮助将不胜感激。 谢谢!
import itertools as IT
import numpy as np
arr=[]
with open('data.txt', 'rb') as f:
ln = IT.islice(f, 4, 7)
arr.append(np.genfromtxt(ln))
ln = IT.islice(f, 1, 4)
arr.append(np.genfromtxt(ln))
ln = IT.islice(f, 1, 4)
arr.append(np.genfromtxt(ln))
print arr
该代码正常工作,但是我的数据文件比上面的例子大得多。因此,我不想重复代码,因为它效率不高。有没有更好的方法来实现这个目标?
向我们展示你的代码,并说明它是如何不符合您的期望。 – lit
请在您的问题中插入数据的相关部分作为* text *,而不是链接到某个外部图像。 –
你可以写一个读取所有行的文件读取器,但只传递4列的行吗?有点像阅读文件但跳过评论行。 'genfromtxt'对于任何能够给出它的行都很满意 - 一个文件,一个生成器,一行行。 – hpaulj