我有一个非常大的稀疏Numpy矩阵(类型为numpy.ndarray)。矩阵太大了,很可能必须存储在虚拟内存中。如何有效地将其转换为稀疏的枕木矩阵(来自scipy.sparse)(用于算术操作)?将dok_matrix更改为csr_matrix会导致相同的内存问题。In [1]: N=int(1e6)
In [3]: import nu
下面是MATLAB内置函数spones(S)的docstring用非零稀疏矩阵元素代替非零稀疏矩阵元素。R= spones( S )生成的矩阵与S具有相同的稀疏结构,但具有非零位置的矩阵。我希望使用numpy/scipy数据结构(例如,来自scipy.sparse的稀疏矩阵)与此函数具有紧密的等价关系。我怎样才能有效地做到这一点?
构建scipy稀疏矩阵的最好方法之一是使用coo_matrix方法。:] are the row indices of the matrix entries但是,如果矩阵非常大,则将整个i,j和数据向量加载到存储器中是不现实的。Pickle是更好的选择,因为numpy.save/load没有针对scipy稀疏进行优化。也许还有另一种更快的格式。nump