序列化大型scipy稀疏矩阵的最佳方法是什么?

vgo*_*ani 2 python numpy hdf5 scipy pytables

我有一个大的scipy稀疏矩阵,它占据了我整个系统内存的90%以上.我想将它保存到磁盘,因为构建矩阵需要几个小时......

我试过cPickle,但这会导致重大内存爆炸...

import numpy as np
from scipy.sparse import lil_matrix
import cPickle

dim = 10**8

M = lil_matrix((dim, dim), dtype=np.float)

with open(filename, 'wb') as f:
    cpickle.dump(M, f)  # leads to a major memory explosion, presumably there is lots of copying
Run Code Online (Sandbox Code Playgroud)

而HDF5不喜欢数据类型:TypeError:Object dtype dtype('O')没有本机HDF5等价物

所以我该怎么做?

Eel*_*orn 5

不幸的是,酸洗效率非常低.我建议访问稀疏矩阵的基础数据数组属性,并以有效的方式存储它们,例如hdf5.从行/列/数据向量的三元组重建稀疏矩阵应该很容易.