[SciPy-dev] feedback on scipy.sparse

Robert Cimrman cimrman3 at ntc.zcu.cz
Thu Dec 13 05:51:56 EST 2007


Hi Matthieu,

Matthieu Brucher wrote:
> I thought I would use csr or csc as every row and column will have some
> values, but not the same each time, so I don't think that coo is what I
> need. But I will try lil when I have some time.

Suppose you have:

row, column, value
0, 10, 1.0
0, 11, 2.0
1, 50, 1.0
1, 55, 3.0
1, 100, 4.0
- the values are not the same each time - there are two rows, each with 
own nonzero columns and values.

then, as Nathan wrote:
 >> In [1]: from scipy import *
 >> In [2]: from scipy.sparse import *
 >> In [3]: row = array([0,0,1,1,1])
 >> In [4]: col = array([10,11,50,55,100])
 >> In [5]: data = array([1.,2.,1.,3.,4.])
 >> In [6]: A = coo_matrix((data,(row,col)),dims=(3,3))

should construct such a matrix, no?
r.

> 2007/12/13, Nathan Bell <wnbell at gmail.com>:
>> On Dec 12, 2007 4:03 AM, Stefan van der Walt <stefan at sun.ac.za> wrote:
>>>> I'd like to know if some fancy indexing will be available soon. I
>> explain
>>>> myself. I need to populate a sparse matrix with some weights for each
>> line. I'd
>>>> like to do s[i, indices] = weights but it does not seem to work. I
>> could use a
>>>> loop, but it would be slower and this is not acceptable (as it is
>> possible to
>>>> do so in Matlab).
>>> The lil_matrix is used to construct matrices like that:
>> Matthieu, if you know all the row and column indices and their
>> corresponding values then you can use the coo_matrix format like this:
>>
>> In [1]: from scipy import *
>> In [2]: from scipy.sparse import *
>> In [3]: row = array([0,1,2,2,1])
>> In [4]: col = array([1,2,0,1,1])
>> In [5]: data = array([1,2,3,4,5])
>> In [6]: A = coo_matrix((data,(row,col)),dims=(3,3))
>> In [7]: A.todense()
>> Out[7]:
>> matrix([[0, 1, 0],
>>         [0, 5, 2],
>>         [3, 4, 0]])
>>




More information about the SciPy-Dev mailing list