[SciPy-dev] Feature request : Comparison of sparse matrices is not implemented.

Nils Wagner nwagner at mecha.uni-stuttgart.de
Thu Dec 2 05:55:11 CST 2004


Robert Kern wrote:

> Nils Wagner wrote:
>
>> Hi all,
>>
>> I tried to visualize the structure of large and sparse matrices using
>>
>> from matplotlib.colors import LinearSegmentedColormap
>> from matplotlib.matlab import *
>> from scipy import *
>> import IPython
>>
>> def spy2(Z):
>>    """
>>    SPY(Z) plots the sparsity pattern of the matrix S as an image
>>    """
>>
>>    #binary colormap min white, max black
>>    cmapdata = {
>>         'red'  :  ((0., 1., 1.), (1., 0., 0.)),
>>         'green':  ((0., 1., 1.), (1., 0., 0.)),
>>         'blue' :  ((0., 1., 1.), (1., 0., 0.))
>>         }
>>    binary =  LinearSegmentedColormap('binary',  cmapdata, 2)
>>
>>    Z = where(Z>0,1.,0.)
>>    imshow(transpose(Z), interpolation='nearest', cmap=binary)
>
>
> Since imshow() doesn't deal with sparse matrices (to my knowledge), 
> but only dense matrices, you need to use Z.todense() regardless.
>
This might be a memory problem for such large matrices arising in  my 
applications...
Just, to receive an impression the number of rows, cols and entries are 
67986, 67986 and 4222171, respectively.

Nils

>   Z = Z.transp().todense() > 0
>   imshow(Z, ...)
>
> If you really need the array to be Float, you can explicitly cast it. 
> Otherwise, where(<condition>, 1.0, 0.0) is extraneous.
>
> I'm sure sparse matrix comparisons are already "on the list," as it were.
>

 





More information about the Scipy-dev mailing list