[Numpy-discussion] The truth value of an array with more than one element is ambiguous. Use a.any() or a.all()

Zachary Pincus zachary.pincus at yale.edu
Wed Oct 27 17:04:59 EDT 2010


> Help! I'm having a problem in searching through the *elements* if a  
> 2d array. I have a loop over a numpy array:
>
>     n,m = G.shape
>     print n,m
>     for i in xrange(n):
>         for j in xrange(m):
>             print type(G), type(G[i,j]), type(float(G[i,j]))
>             g = float(abs(G[i,j]))
>             if g < cut:
>                 print i,j,G[i,j]
>
> However, I'm getting the error message:
>
>     The truth value of an array with more than one element is  
> ambiguous. Use a.any() or a.all()
>
> despite the fact that I'm not computing a truth value of an array.  
> I'd like to just compare to G[i,j] or abs(G[i,j]), which should be a  
> *single* value, and *not* an array. I even call 'float' here to make  
> sure that I cast this to a normal python float. But I still get this  
> error message.

Which line is raising the error?
My guess is it's the only truth-value testing line: "if g < cut". (I'm  
not sure what else could error here in that way...) It looks like g is  
probably a scalar, but your code isn't showing where cut comes from,  
nor have you printed out it's type... is it an array?

Zach



More information about the NumPy-Discussion mailing list