[SciPy-Dev] Bug in use of np.sign() function with sparse csc_matrix?
Nathaniel Smith
njs@pobox....
Sun Jan 22 12:51:54 CST 2012
Numpy doesn't know anything about scipy sparse matrices in general -
they're just another random user defined python object. Generally you have
to call todense() before calling any numpy function on them.
It wouldn't be that hard for you to implement sign() for csc or csr
matrices directly, since the pattern of nnz's doesn't change - just make a
new matrix that has the same indices and indptr arrays, but call sign() on
the data array.
- Nathaniel
On Jan 22, 2012 9:52 AM, "Warren Weckesser" <warren.weckesser@enthought.com>
wrote:
> In all the examples that I've tried with a sparse csc_matrix `a`,
> `sign(a)` always returns 1. I expect it to return the matrix of
> element-wise signs of a. For example:
>
> In [1]: from scipy.sparse import csc_matrix
>
> In [2]: a = csc_matrix([[0.0, 1.0, 2.0], [0.0, 0.0, -3.0], [0.0, 0.0,
> 0.0]])
>
> In [3]: a.todense()
> Out[3]:
> matrix([[ 0., 1., 2.],
> [ 0., 0., -3.],
> [ 0., 0., 0.]])
>
> In [4]: np.sign(a.todense())
> Out[4]:
> matrix([[ 0., 1., 1.],
> [ 0., 0., -1.],
> [ 0., 0., 0.]])
>
> In [5]: np.sign(a) # Incorrect result?
> Out[5]: 1
>
> In [6]: import scipy
>
> In [7]: scipy.__version__
> Out[7]: '0.11.0.dev-81dc505'
>
> In [8]: np.__version__
> Out[8]: '1.6.1'
>
>
> I think that's a bug, but if someone knows better, let me know!
>
> Warren
>
>
> _______________________________________________
> SciPy-Dev mailing list
> SciPy-Dev@scipy.org
> http://mail.scipy.org/mailman/listinfo/scipy-dev
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://mail.scipy.org/pipermail/scipy-dev/attachments/20120122/33237f57/attachment.html
More information about the SciPy-Dev
mailing list