[SciPy-User] [SciPy-user] ValueError: The truth value of an array with more than one element is ambiguous.
Sat Apr 7 15:32:15 CDT 2012
I am still a little confused as how to use numpy.all() to evaluate all
three arrays for a specific range vales. I looked at the documentation, but
did not see any examples that were close to what I need.
Tony Yu-3 wrote:
> On Fri, Apr 6, 2012 at 12:54 AM, Tony Yu <email@example.com> wrote:
>> On Thu, Apr 5, 2012 at 6:46 PM, surfcast23 <firstname.lastname@example.org> 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
>>> 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
>> 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
>> 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
>> Hope that helps,
> Oops, I think I got myself mixed up in the explanation. Separating the
> comparisons fixes one error; For example, the following:
>>>> (min <= Xa) & (Xa <= max)
> will return an array of bools instead of raising an error (as you would
> with `min <= Xa <= max`). This is what I meant to explain above.
> But, throwing an `if` in front of that comparison still doesn't work
> because it's ambiguous: Should `np.array([True False])` be true or false?
> Instead you should check `np.all(np.array([True False]))`, which evaluates
> as False since not-all elements are True, or `np.any(np.array([True
> False]))`, which evaluates as True since one element is True.
> SciPy-User mailing list
View this message in context: http://old.nabble.com/ValueError%3A-The-truth-value-of-an-array-with-more-than-one-element-is-ambiguous.-tp33583156p33649757.html
Sent from the Scipy-User mailing list archive at Nabble.com.
More information about the SciPy-User