[SciPy-User] numpy.diff of sparse matrix

Jonathan Stickel jjstickel@vcn....
Tue Sep 7 13:49:20 CDT 2010


I'd like to use numpy.diff on a sparse matrix, but I get the following:


In [76]: np.diff(np.identity(3),axis=0)
Out[76]:
array([[-1.,  1.,  0.],
        [ 0., -1.,  1.]])

In [77]: np.diff(sparse.identity(3),axis=0)
---------------------------------------------------------------------------
IndexError                                Traceback (most recent call last)

/Users/jstickel/temp/<ipython console> in <module>()

/opt/local/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/site-packages/numpy/lib/function_base.pyc 
in diff(a, n, axis)
     961     slice1 = [slice(None)]*nd
     962     slice2 = [slice(None)]*nd
--> 963     slice1[axis] = slice(1, None)
     964     slice2[axis] = slice(None, -1)
     965     slice1 = tuple(slice1)

IndexError: list assignment index out of range


I suppose numpy.diff doesn't know how to handle a sparse matrix object. 
  Converting to dense would work, but that would defeat the purpose of 
using sparse matrices.  Any quick solutions?  I don't have time now, but 
if I were to implement a sparse diff, should it go within numpy.diff or 
be a separate function (maybe scipy.sparse.spdiff)?

Thanks,
Jonathan


More information about the SciPy-User mailing list