Python 使用numpy.genfromtxt从文件中读取数据时跳过行
我在一个文件中有一个数据集,如下所示Python 使用numpy.genfromtxt从文件中读取数据时跳过行,python,arrays,file,numpy,io,Python,Arrays,File,Numpy,Io,我在一个文件中有一个数据集,如下所示 A 1 B 2 C 3 A 4 B 5 C 6 我只想提取包含'A'的行。如何使用numpy.genfromtxt实现这一点?numpy中是否有其他功能可以帮助我实现同样的功能?我也想要这个功能,但它不存在。因此,现在您可能只需将整个文件作为矩阵加载,然后使用奇特的索引将其子集,或者删除不需要的部分,等等。如果实际需要的行数非常少,而总大小非常大,您甚至可以使用常规的Python方式对这些行进行迭代。您可以读取整个文件,然后使用奇特的索引进行过滤: a =
A 1
B 2
C 3
A 4
B 5
C 6
我只想提取包含
'A'
的行。如何使用numpy.genfromtxt
实现这一点?numpy中是否有其他功能可以帮助我实现同样的功能?我也想要这个功能,但它不存在。因此,现在您可能只需将整个文件作为矩阵加载,然后使用奇特的索引将其子集,或者删除不需要的部分,等等。如果实际需要的行数非常少,而总大小非常大,您甚至可以使用常规的Python方式对这些行进行迭代。您可以读取整个文件,然后使用奇特的索引进行过滤:
a = np.genfromtxt('test.txt', dtype=str)
check = (a[:,0]=='A')
a = a[check]
numpy.genfromtxt
接受生成器,因此可以链接genfromtext
和ifilter
:
from itertools import ifilter
with open(fname, 'rb') as inp:
filtered_inp = ifilter(lambda x: x.startswith('A'), inp)
a = np.genfromtxt(filtered_inp)
嗯,我明白了。我想要的行数相当大。我目前正在加载整个文件。那么,在有人为NumPy编写修补程序之前,您现在拥有的可能与现在一样好。谢谢@alko:)这应该比从文件读取所有数据快一点。我希望numpy能在将来直接实现