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

Robert Kern robert.kern at gmail.com
Wed Oct 27 17:00:39 EDT 2010


On Wed, Oct 27, 2010 at 15:58, Rick Muller <rpmuller at gmail.com> wrote:
> 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.
>
> At this point, I suspect that I'm doing something dumb, rather than
> discovering some unique bug in numpy. Can anyone help me out?

Can you provide a complete, self-contained example that does not work?
What kind of object is cut?

-- 
Robert Kern

"I have come to believe that the whole world is an enigma, a harmless
enigma that is made terrible by our own mad attempt to interpret it as
though it had an underlying truth."
  -- Umberto Eco



More information about the NumPy-Discussion mailing list