From: Chris B. <Chr...@no...> - 2004-02-03 00:27:04
|
Chris Burns wrote: > I'm puzzled by the following behaviour when using conditionals > in a function like nonzero(): >>>>numarray.nonzero(x < 5 and x > 2) > > Am I doing something > wrong or is the use of 'and' and 'or' not implemented for conditionals? "and" and "or" are not implimented because Python does not allow them to be overloaded. Searching of various archives might tell you why. One work around is to use bitwise-and : "&". It means something different, but if you're comparing just ones and zeros, it works fine: x = numarray.arange(10) >>> x = numarray.arange(10) >>> numarray.nonzero( (x < 5) & (x > 2) ) (array([3, 4]),) >>> bitwise or seems to work fine too: >>> numarray.nonzero( (x < 2) | (x > 5) ) (array([0, 1, 6, 7, 8, 9]),) >>> Make sure you use enough parenthesis. -Chris -- Christopher Barker, Ph.D. Oceanographer NOAA/OR&R/HAZMAT (206) 526-6959 voice 7600 Sand Point Way NE (206) 526-6329 fax Seattle, WA 98115 (206) 526-6317 main reception Chr...@no... |