我必须处理稀疏矩阵,偶尔可能非常大,接近或超过RAM容量。我还需要支持mat*vec
和mat*mat
操作。
由于内部csr_matrix
是3个数组data
,indices
和indptr
可以从numpy memmap创建csr矩阵。
答案 0 :(得分:0)
这可以部分起作用,直到您尝试对阵列做很多事情为止。如果子集化,很有可能将子数组完全读入内存,否则会出错。
这里重要的考虑因素是,假设数组是典型的内存numpy数组,编写底层代码。对于映射阵列和内存阵列,随机访问的成本差异很大。实际上,这里的许多代码(在撰写本文时)都在Cython中,可能无法使用更多的奇异数组类型。
只要内存数组的行为相同,大多数代码也可以随时更改。当我学到了一些与我一起工作的代码,但是对基础数组使用了h5py.Dataset
时,这个人就使我感到痛苦。效果很好,直到scipy
的错误修复版本完全破解了它。
答案 1 :(得分:-1)
这没有问题。