On Fri, Apr 2, 2010 at 08:28, Ryan May <rma...@gmail.com> wrote: > On Thu, Apr 1, 2010 at 10:07 PM, Shailendra <shailendra.vi...@gmail.com> > wrote: >> Hi All, >> Below is some array behaviour which i think is odd >>>>> a=arange(10) >>>>> a >> array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9]) >>>>> b=nonzero(a<0) >>>>> b >> (array([], dtype=int32),) >>>>> if not b[0]: >> ... print 'b[0] is false' >> ... >> b[0] is false >> >> Above case the b[0] is empty so it is fine it is considered false >> >>>>> b=nonzero(a<1) >>>>> b >> (array([0]),) >>>>> if not b[0]: >> ... print 'b[0] is false' >> ... >> b[0] is false >> >> Above case b[0] is a non-empty array. Why should this be consider false. >> >>>>> b=nonzero(a>8) >>>>> b >> (array([9]),) >>>>> if not b[0]: >> ... print 'b[0] is false' >> ... >>>>> >> Above case b[0] is non-empty and should be consider true.Which it does. >> >> I don't understand why non-empty array should not be considered true >> irrespective to what value they have. >> Also, please suggest the best way to differentiate between an empty >> array and non-empty array( irrespective to what is inside array). > > But by using: > > if not b[0]: > > You're not considering the array as a whole, you're looking at the > first element, which is giving expected results.
No, b is a tuple containing the array. b[0] is the array itself. -- 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 _______________________________________________ NumPy-Discussion mailing list NumPy-Discussion@scipy.org http://mail.scipy.org/mailman/listinfo/numpy-discussion