[SciPy-User] indexation of sparse matrices
Sun Dec 13 11:34:02 CST 2009
what you want to do is called *fancy indexing* in numpy. Fancy
indexing consists in indexing an array with (a) sequence(s) of indices,
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)
<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.
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
More information about the SciPy-User