Python 将大文件作为字典加载
我关于stackoverflow的第一个问题:) 我正在尝试从手套向量加载一个相关向量,并创建一个字典,其中单词作为键,相应的向量作为值。我用了通常天真的方法:Python 将大文件作为字典加载,python,numpy,dictionary,pickle,word2vec,Python,Numpy,Dictionary,Pickle,Word2vec,我关于stackoverflow的第一个问题:) 我正在尝试从手套向量加载一个相关向量,并创建一个字典,其中单词作为键,相应的向量作为值。我用了通常天真的方法: fp=open(wordEmbdfile) self.wordVectors={} # Create wordVector dictionary for aline in fp: w=aline.rstrip().split() self.wordVectors[w[0]]=w[1:] fp.close() 我看到活动
fp=open(wordEmbdfile)
self.wordVectors={}
# Create wordVector dictionary
for aline in fp:
w=aline.rstrip().split()
self.wordVectors[w[0]]=w[1:]
fp.close()
我看到活动监视器上有巨大的内存压力,在尝试了一两个小时后,它最终崩溃了
我将尝试拆分成多个较小的文件,并创建多个字典
与此同时,我有以下问题:
gzip.open
读取gzip文件,或者先解压缩,然后使用plain open读取谢谢 首先,对于有限数量的线路,比如说10或100条线路,这是否正常工作?读取整个文件并只保存每行的一部分是否有效?
genfromtxt
和loadtxt
基本上做相同的事情-逐行读取,将行拆分为一个列表,并将所有内容收集到一个列表中。最后,它们将大列表转换为数组。内存消耗将是类似的。我相信您可以保存对rstrip
的调用,只需执行w=aline.split()
有人编辑了代码,但是现在缩进看起来是错误的。顺便说一句,如果您希望值是浮点值,您仍然需要转换它(现在它是字符串)。首先,对于有限数量的线路,例如10或100条线路,这是否正常工作?读取整个文件并只保存每行的一部分是否有效?genfromtxt
和loadtxt
基本上做相同的事情-逐行读取,将行拆分为一个列表,并将所有内容收集到一个列表中。最后,它们将大列表转换为数组。内存消耗将是类似的。我相信您可以保存对rstrip
的调用,只需执行w=aline.split()
有人编辑了代码,但现在缩进看起来不正确。顺便说一句,如果您希望值是浮点值,您仍然需要转换它(现在它是字符串)。