[SciPy-User] Can I copy a sparse matrix into an existing dense numpy matrix?
Warren Weckesser
warren.weckesser@enthought....
Sun Feb 5 09:21:01 CST 2012
On Sun, Feb 5, 2012 at 9:05 AM, Conrad Lee <conradlee@gmail.com> wrote:
> Say I have a huge numpy matrix *A* taking up tens of gigabytes. It takes
> a non-negligible amount of time to allocate this memory.
>
> Let's say I also have a collection of scipy sparse matrices with the same
> dimensions as the numpy matrix. Sometimes I want to convert one of these
> sparse matrices into a dense matrix to perform some vectorized operations
> that can't be performed on sparse matrices.
>
> Can I load one of these sparse matrices into *A* rather than re-allocate
> space each time I want to convert a sparse matrix into a dense matrix? The
> .toarray() and .todense() methods which are available on scipy sparse
> matrices do not seem to take an optional dense array argument, but maybe
> there is some other way to do this.
>
> (I've also started a stackoverflow version of this question here<http://stackoverflow.com/questions/9041236/load-sparse-scipy-matrix-into-existing-numpy-dense-matrix>
> .)
>
> Thanks,
>
> Conrad lee
>
>
If your sparse matrix is in coo format, you can use fancy indexing to
assign the values to the existing array. For example:
In [29]: import scipy.sparse as sp
In [30]: import numpy as np
In [31]: a = sp.coo_matrix([[0,0,1,0],[0,0,0,0],[2,0,3,0],[0,4,0,0]])
In [32]: d = np.zeros((4,4), dtype=np.int32)
In [33]: a.todense()
Out[33]:
matrix([[0, 0, 1, 0],
[0, 0, 0, 0],
[2, 0, 3, 0],
[0, 4, 0, 0]])
In [34]: d[a.row, a.col] = a.data
In [35]: d
Out[35]:
array([[0, 0, 1, 0],
[0, 0, 0, 0],
[2, 0, 3, 0],
[0, 4, 0, 0]])
Warren
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://mail.scipy.org/pipermail/scipy-user/attachments/20120205/686770e2/attachment.html
More information about the SciPy-User
mailing list