[SciPy-User] numpy.diff of sparse matrix
Jonathan Stickel
jjstickel at vcn.com
Wed Sep 8 10:52:09 EDT 2010
I have found a workaround that meets my needs, in case anyone is interested:
In [37]: Is = sparse.identity(3)
In [38]: Ds = Is[1:] - Is[:-1]
In [39]: Ds.todense()
Out[39]:
matrix([[-1., 1., 0.],
[ 0., -1., 1.]])
I haven't yet tested for computational efficiency vs. dense matrices,
but I suppose it should be good.
Jonathan
On 9/7/10 14:27 , Jason Rennie wrote:
> My experience is similar to yours---numpy doesn't work with scipy sparse
> matrices. Not even numpy.dot does the right thing. My guess is that
> you'd want to write the sparse diff for the sparse library. An example
> of how to organize such function is the sparse hstack:
>
> http://docs.scipy.org/doc/scipy/reference/generated/scipy.sparse.hstack.html
>
> Cheers,
>
> Jason
>
> On Tue, Sep 7, 2010 at 2:49 PM, Jonathan Stickel <jjstickel at vcn.com
> <mailto:jjstickel at vcn.com>> wrote:
>
> 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
> _______________________________________________
> SciPy-User mailing list
> SciPy-User at scipy.org <mailto:SciPy-User at scipy.org>
> http://mail.scipy.org/mailman/listinfo/scipy-user
>
>
>
>
> --
> Jason Rennie
> Research Scientist, ITA Software
> 617-714-2645
> http://www.itasoftware.com/
>
>
>
> _______________________________________________
> SciPy-User mailing list
> SciPy-User at scipy.org
> http://mail.scipy.org/mailman/listinfo/scipy-user
More information about the SciPy-User
mailing list