[SciPy-User] [SciPy-user] ValueError: The truth value of an array with more than one element is ambiguous.

Tony Yu tsyu80@gmail....
Thu Apr 5 23:54:40 CDT 2012


On Thu, Apr 5, 2012 at 6:46 PM, surfcast23 <surfcast23@gmail.com> wrote:

> Hi, I have an if statement and what I want it to do is go through arrays
> and find the common elements in all three arrays. When I try the code below
> I get this error * ValueError: The truth value of an array with more than
> one element is ambiguous. Use a.any() or a.all()* Can some one explain
> the error to me and how I might be able to fix it. Thanks in advance. *if
> min <= Xa <=max & min <= Ya <=max & min <= Za <=max: print("in range")
> else: print("Not in range")*


This explanation may or may not be clear, but your question is answered in
this communication<http://mail.python.org/pipermail/python-ideas/2011-October/012278.html>
.

Roughly:
1) Python's default behavior for chained comparisons don't work as you'd
expect for numpy arrays.
2) Python doesn't allow numpy to change this default behavior (at least
currently, and maybe
never<http://mail.python.org/pipermail/python-dev/2012-March/117510.html>
).

Nevertheless, you can get around this by separating the comparisons

>>> if (min <= Xa) & (Xa <= max):

Note the use of `&` instead of `and`, which is at the heart of the
issue<http://www.python.org/dev/peps/pep-0335/>
.

Hope that helps,
-Tony
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://mail.scipy.org/pipermail/scipy-user/attachments/20120406/d522c6f2/attachment.html 


More information about the SciPy-User mailing list