【发布时间】:2013-11-30 13:14:20
【问题描述】:
我在一个文件中有一个数据集,如下所示
A 1
B 2
C 3
A 4
B 5
C 6
我只想提取包含'A' 的行。我如何使用numpy.genfromtxt 做到这一点? numpy 中是否还有其他功能可以帮助我做同样的事情?
【问题讨论】:
标签: python arrays file numpy io
我在一个文件中有一个数据集,如下所示
A 1
B 2
C 3
A 4
B 5
C 6
我只想提取包含'A' 的行。我如何使用numpy.genfromtxt 做到这一点? numpy 中是否还有其他功能可以帮助我做同样的事情?
【问题讨论】:
标签: python arrays file numpy io
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)
【讨论】:
您可以阅读整个文件,然后使用精美的索引进行过滤:
a = np.genfromtxt('test.txt', dtype=str)
check = (a[:,0]=='A')
a = a[check]
【讨论】:
我也想要这个功能,但它不存在。因此,现在您可能应该将整个文件加载为矩阵,然后使用花哨的索引对其进行子集化,或删除您不想要的部分,等等。如果您实际需要的行数非常少且总大小非常大,您最好以常规 Python 方式遍历这些行。
【讨论】: