[SciPy-User] indexation of sparse matrices
Emmanuelle Gouillart
emmanuelle.gouillart at normalesup.org
Sun Dec 13 12:34:02 EST 2009
Hi Dmitrey,
what you want to do is called *fancy indexing* in numpy. Fancy
indexing consists in indexing an array with (a) sequence(s) of indices,
see
http://docs.scipy.org/doc/numpy/reference/arrays.indexing.html#advanced-indexing
for more details. It works on numpy arrays as well as sparse matrices for
the lil_matrix format. Here is an example:
>>> import numpy as np
>>> from scipy import sparse
>>> a = np.zeros((10,10))
>>> a[2, 0] = a[3, 1] = a[4, 2] = 1
>>> a[4, 5] = 2
>>> a_sparse = sparse.lil_matrix(a)
>>> a_sparse
<10x10 sparse matrix of type '<type 'numpy.float64'>'
with 4 stored elements in LInked List format>
>>> I = (2, 3, 4)
>>> J = (0, 1, 5)
>>> a[I, J]
array([ 1., 1., 2.])
>>> a_sparse[I, J]
<1x3 sparse matrix of type '<type 'numpy.float64'>'
with 3 stored elements in LInked List format>
>>> a_sparse[I, J].todense()
matrix([[ 1., 1., 2.]])
The lil_matrix is meant for supporting fancy indexing, but it is
not efficient for matrices operations such as inversion or
multiplication; you should transform your matrix to another format for
performing such operations.
Cheers,
Emmanuelle
On Sun, Dec 13, 2009 at 03:44:52PM +0200, Dmitrey wrote:
> hi all,
> suppose I have a scipy.sparse matrix A and positions of elements to be
> extracted I = (2,3,4), J = (0,1,5).
> how can I get vector val (Python list or numpy array) that contains the
> elements A[2,0], A[3,1], A[4,5]?
> I haven't found it in scipy.sparse doc.
> And, if anyone knows, how can I get it from dense numpy array A?
> Thank you in advance, D.
> _______________________________________________
> SciPy-User mailing list
> SciPy-User at scipy.org
> http://mail.scipy.org/mailman/listinfo/scipy-user
More information about the SciPy-User
mailing list