【发布时间】:2014-12-02 23:11:29
【问题描述】:
我想创建一个大的稀疏矩阵,由于内存问题,它的源数据无法完全加载。您可能认为我们在磁盘上有一个 非常 大的文件,我们无法读取它。
我考虑了一下,但找不到从生成器创建稀疏矩阵的方法。
from scipy.sparse import coo_matrix
matrix1 = coo_matrix(xrange(10)) # it works. Create a sparse matrix with 9 elements.
data = ((0, 1, random.randint(0,5)) for i in xrange(10)) # generator example
matrix2 = coo_matrix(data) # does not work.
有什么想法吗?
编辑:我找到了this,还没有尝试过,但看起来很有帮助。
【问题讨论】:
-
你想用这个数据和矩阵做什么?
-
稀疏矩阵本身不能是生成器。
coo_matrix的关键数据结构是 3 个numpy数组。如果源数据在内存中放不下,稀疏矩阵也放不下。 -
pytables可能会起作用 - stackoverflow.com/questions/11129429 -
谢谢。嗯。如果源数据不能放入内存,稀疏矩阵也不能,这不是有点奇怪。我并不是说稀疏矩阵包含生成器。我想逐行有效地创建一个稀疏矩阵。通过这样做,我可能有稀疏的数据,如果我表示为密集,则无法适应。你怎么看?
标签: python scipy sparse-matrix