我需要逐行读取一个大文件.假设文件超过5GB,我需要读取每一行,但显然我不想使用,readlines()因为它会在内存中创建一个非常大的列表.
以下代码如何适用于此案例?xreadlines本身是一个一个地读入记忆吗?是否需要生成器表达式?
f = (line for line in open("log.txt").xreadlines()) # how much is loaded in memory?
f.next()
Run Code Online (Sandbox Code Playgroud)
另外,我可以做什么来以相反的顺序读取它,就像Linux tail命令一样?
我发现:
http://code.google.com/p/pytailer/
和
两者都运作得很好!
如何csr_matrix以便携式格式保存/加载scipy稀疏?scipy稀疏矩阵在Python 3(Windows 64位)上创建,以在Python 2(Linux 64位)上运行.最初,我使用了pickle(使用protocol = 2和fix_imports = True),但这从Python 3.2.2(Windows 64位)到Python 2.7.2(Windows 32位)不起作用并得到错误:
TypeError: ('data type not understood', <built-in function _reconstruct>, (<type 'numpy.ndarray'>, (0,), '[98]')).
Run Code Online (Sandbox Code Playgroud)
接下来,尝试过numpy.save,numpy.load以及scipy.io.mmwrite()并且scipy.io.mmread()这些方法都没有奏效.
我想检查两个csr_matrix是否相等.
如果我做:
x.__eq__(y)
Run Code Online (Sandbox Code Playgroud)
我明白了:
raise ValueError("The truth value of an array with more than one "
ValueError: The truth value of an array with more than one element is ambiguous. Use a.any() or a.all().
Run Code Online (Sandbox Code Playgroud)
但是,这很好用:
assert (z in x for z in y)
Run Code Online (Sandbox Code Playgroud)
有没有更好的方法呢?也许使用一些scipy优化的功能?
非常感谢
我有一个很大的csv文件,它列出了图中节点之间的连接.例:
0001,95784
0001,98743
0002,00082
0002,00091
所以这意味着节点id 0001连接到节点95784和98743,依此类推.我需要把它读成numpy中的稀疏矩阵.我怎样才能做到这一点?我是python的新手,所以这方面的教程也会有所帮助.
我有一个大文件,其中每行有一对8个字符串.就像是:
ab1234gh iu9240gh
Run Code Online (Sandbox Code Playgroud)
在每一行.
此文件实际上代表一个图形,每个字符串都是一个节点ID.我想在文件中读取并直接创建一个scipy稀疏邻接矩阵.然后,我将使用python中提供的众多工具之一在此矩阵上运行PCA
有没有一种巧妙的方法来做到这一点,还是我需要首先在RAM中制作一个图形,然后将其转换为稀疏矩阵?由于文件很大,我想尽可能避免中间步骤.
最后,我将稀疏邻接矩阵提供给http://scikit-learn.org/stable/modules/generated/sklearn.decomposition.TruncatedSVD.html#sklearn.decomposition.TruncatedSVD.