[SciPy-dev] Scipy equivalents of MATLAB's sparse/find/accumarray

Viral Shah vshah at interactivesupercomputing.com
Mon Apr 7 14:53:11 EDT 2008


Nathan, thanks for your earlier response on sparse matrix indexing.

The other thing that I found cumbersome with the current sparse  
implementation in scipy is not being able to figure out the exact  
equivalents of Matlab's sparse/accumarray and find. In the following  
examples, I will denote Matlab codes with M>> and Python with P>>

M>> S = sparse (I, J, V, m, n)

The equivalent in Python seems to be:
P>> S = sparse.csc_matrix ((obj, ij), dims)
Or
P>> S = sparse.csr_matrix ((obj, ij), dims)

It wasn't clear looking at the documentation, what happens when there  
are duplicate row/col values. Matlab's sparse() adds duplicates, and  
accumarray() provides a more general way to combine duplicates. I was  
wondering, if it would be possible to add an extra argument that would  
allow the user to specify what to do with duplicates. Options could be  
last, any, sum, prod, max, min, argmax, argmin, or a user specified  
function.

For
M>> F = find (a)

The equivalent seems to be;
P>> f = where(a)

But where doesn't seem to work for sparse matrices, in 0.6.

-viral






More information about the SciPy-Dev mailing list