[Numpy-discussion] Truth value of an array

David Douard david.douard@logilab...
Fri Apr 18 06:55:17 CDT 2008

On Fri, Apr 18, 2008 at 01:11:37PM +0200, Olivier Verdier wrote:
> In mathematics, if I compare two function, it means that I compare on
> all its "coordinates". If I say "f < g" I mean "f(x) < g(x) for all
> x".
> The same holds for a vector, if I write "v == w" I mean "v[i] == w[i]
> for all i".
> How come this doesn't work in numpy? And why the message about the
> truth value of an array being ambiguous? What is ambiguous?
> In my opinion any boolean array should be cast with all()
> automatically so that people can simply write:
> if v == w:
>   ...

No. A comparison operator on ndarray produce an ndarray of booleans. So
you have to write 

if numpy.alltrue(u == v):

This is a very good idea, since it allows you to also write things

u[v<0] = 0

Which you could definitely not do if the comparison returns a scalar
bool instead of a ndarray.

More, you may also want to write things like:

if numpy.sometrue(u<0):

Same remark.

> Or is there a good reason why this is not possible?
> Thank you!
> _______________________________________________
> Numpy-discussion mailing list
> Numpy-discussion@scipy.org
> http://projects.scipy.org/mailman/listinfo/numpy-discussion

David Douard                        LOGILAB, Paris (France), +33 1 45 32 03 12
Formations Python, Zope, Debian :   http://www.logilab.fr/formations
Développement logiciel sur mesure : http://www.logilab.fr/services
Informatique scientifique :         http://www.logilab.fr/science
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 189 bytes
Desc: Digital signature
Url : http://projects.scipy.org/pipermail/numpy-discussion/attachments/20080418/570ef9aa/attachment.bin 

More information about the Numpy-discussion mailing list