从一个巨大的文件中读取几行作为Numpy数组

时间:2017-03-04 06:36:27

标签: python-2.7 file numpy

我有一个文本文件,其中包含十亿个单词及其相应的300维单词向量。我需要提取几千个单词&他们的文字来自文件&将它们存储为Numpy数组。文本文件的大小约为1 GB 天真地,我试图使用genfromtxt将整个文件加载到一个数组中但是没有用。然后我尝试逐行读取整个文件(文件中的每一行由一个单词和它的单词向量组成),寻找单词和提取单词向量,但我想,这需要每个单词一次通过文件,因为我需要数千个单词,它需要遍历整个文件数千次。
什么是最快,最有效的方法呢?

1 个答案:

答案 0 :(得分:2)

我不知道这是最快的(可能不是),但效果相当好(我在> 100,000行文件上测试过):

F = filter(lambda s: s.strip().split()[0] in word_set if s.strip() else False,
           open(fn, 'rt'))
x = np.genfromtxt(F, *yourargs, **yourkwds)

这适用于Python2。在Python3中,似乎必须输入.encode()