[Numpy-discussion] weird numpy.any() behavior; bug, or 6-legged feature?
Matthew Koichi Grimes
mkg at cs.nyu.edu
Tue Jan 16 09:06:58 CST 2007
Numpy's any() function gives unintuitive results when given a generator
rather than a sequence:
>>> import numpy as N
>>> N.any( i < 0 for i in range(3) )
True
If the generator is instead given as a list (using a list
comprehension), then the expected answer is given:
>>> N.any( [i < 0 for i in range(3)] )
False
Python 2.5's built-in any() seems to deal fine with generators:
>>> any( i < 0 for i in range(3) )
True
My first guess at what's happening in numpy.any() is that the generator
object itself is being interpreted as a "True", in the type-weak C sense
of the word.
Is this a bug? It seems like having to generate a whole list before
calling any() defeats the whole appeal of using any() in the first
place; namely that it'll exit on the first False returned by the
generator, without going through the rest of the elements.
-- Matt
More information about the Numpy-discussion
mailing list