Reputation: 21
I've been trying to use numpy on Python to plot some data. However I'm getting an error I don't understand:
ValueError: The truth value of an array with more than one element is ambiguous. Use a.any() or a.all()
And this is the line supposed to cause the error (the third line):
def T(z):
for i in range(3):
if (z <= z_tbl[i+1]):
return T0_tbl[i]+a_tbl[i]*(z-z_tbl[i])
return 0
Those lists are just some lists of integers, and z is an integer too
How can i fix it?
Upvotes: 1
Views: 19500
Reputation: 309929
Either z
or z_tbl[i+1]
is a numpy array. For numpy arrays, rich comparisons (==
, <=
, >=
, ...) return another (boolean) numpy array.
bool
on a numpy array will give you the exception that you are seeing:
>>> a = np.arange(10)
>>> a == 1
array([False, True, False, False, False, False, False, False, False, False], dtype=bool)
>>> bool(a == 1)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ValueError: The truth value of an array with more than one element is ambiguous. Use a.any() or a.all()
Numpy is trying to tell you what to do:
>>> (a == 1).any() # at least one element is true?
True
>>> (a == 1).all() # all of the elements are true?
False
Upvotes: 5