使用numpy.genfromtxt从文件读取数据时跳过行

时间:2013-11-17 11:14:36

标签: python arrays file numpy io

我在文件中有一个数据集,如下所示

A 1
B 2
C 3
A 4
B 5
C 6

我想只提取包含'A'的行。如何使用numpy.genfromtxt执行此操作? numpy中是否有其他功能可以帮助我做同样的事情?

3 个答案:

答案 0 :(得分:7)

numpy.genfromtxt接受生成器,因此您可以链接genfromtextifilter

from itertools import ifilter
with open(fname, 'rb') as inp:
     filtered_inp = ifilter(lambda x: x.startswith('A'), inp)
     a = np.genfromtxt(filtered_inp)

答案 1 :(得分:2)

您可以使用花式索引读取整个文件并进行过滤:

a = np.genfromtxt('test.txt', dtype=str)

check = (a[:,0]=='A')
a = a[check]

答案 2 :(得分:1)

我也想要这个功能,但它不存在。所以现在你应该只是将整个文件作为矩阵加载,然后使用花式索引对其进行子集化,或删除你不想要的部分等。如果你真正想要的行数非常小而且总大小非常大,你甚至可以通过常规Python方式遍历行更好。