[SciPy-User] numpy.piecewise doesn't work with lists, only ndarrays
Warren Weckesser
warren.weckesser at enthought.com
Mon Oct 8 17:26:24 EDT 2012
On Mon, Oct 8, 2012 at 5:14 PM, Juan Luis Cano Rodríguez <
juanlu001 at gmail.com> wrote:
> I have noticed this behaviour of numpy.piecewise:
>
> In [1]: import numpy as np
>
> In [2]: q = [1, 2, 3, 4, 5, 6]
>
> In [3]: np.piecewise(q, [q < 3, 3 <= q], [-1, 1])
> Out[3]: array([ 1, -1, 0, 0, 0, 0])
>
>
The `condlist` argument must be a list of bool arrays. In your case,
because `q` is python list, `q < 3` is not an array. It is simply `False`:
In [3]: q = [1, 2, 3, 4, 5, 6]
In [4]: q < 3
Out[4]: False
It will work if you pass in lists of boolean values. E.g.:
In [6]: piecewise(q, [[x < 3 for x in q], [x >= 3 for x in q]], [-1, 1])
Out[6]: array([-1, -1, 1, 1, 1, 1])
Warren
In [4]: q = np.array(q)
>
> In [5]: np.piecewise(q, [q < 3, 3 <= q], [-1, 1])
> Out[5]: array([-1, -1, 1, 1, 1, 1])
>
> Maybe the function should work the same both with lists and arrays? Should
> I file a bug?
>
> _______________________________________________
> SciPy-User mailing list
> SciPy-User at scipy.org
> http://mail.scipy.org/mailman/listinfo/scipy-user
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.scipy.org/pipermail/scipy-user/attachments/20121008/baff58b8/attachment.html>
More information about the SciPy-User
mailing list