[SciPy-Dev] Bug in use of np.sign() function with sparse csc_matrix?

Warren Weckesser warren.weckesser@enthought....
Sun Jan 22 12:41:03 CST 2012


On Sun, Jan 22, 2012 at 12:24 PM, Nils Wagner
<nwagner@iam.uni-stuttgart.de>wrote:

> On Sun, 22 Jan 2012 11:52:13 -0600
>  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
>
> >>> from scipy.linalg import signm
> >>> signm(a.todense())
> array([[  1.00000000e+00,  -2.01948392e-28,
>  -1.80945759e-25],
>        [  0.00000000e+00,   1.00000000e+00,
>  7.06819371e-28],
>        [  0.00000000e+00,   0.00000000e+00,
>  1.00000000e+00]])
>
>
>

signm is the matrix sign function (
www.siam.org/books/ot104/OT104HighamChapter5.pdf), not the element-wise
sign.

Warren
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://mail.scipy.org/pipermail/scipy-dev/attachments/20120122/d3c59efa/attachment.html 


More information about the SciPy-Dev mailing list