On Tue, Mar 30, 2010 at 3:16 PM, Friedrich Romstedt <friedrichromst...@gmail.com> wrote: > 2010/3/30 Ryan May <rma...@gmail.com>: >> On Tue, Mar 30, 2010 at 11:12 AM, Alan G Isaac <ais...@american.edu> wrote: >>> On 3/30/2010 12:56 PM, Sean Mulcahy wrote: >>>> 512x512 arrays. I would like to set elements of the array whose value >>>> fall within a specified range to zero (eg 23< x< 45). >>> >>> x[(23<x)*(x<45)]=0 >> >> Or a version that seems a bit more obvious (doing a multiply between >> boolean arrays to get an AND operator seems a tad odd): >> >> x[(23<x) & (x<45)] = 0 > > We recently found out that it executes faster using: > > x *= ((x <= 23) | (x >= 45)) .
Interesting. In an ideal world, I'd love to see why exactly that is, because I don't think multiplication should be faster than a boolean op. If you need speed, then by all means go for it. But if you don't need speed I'd use the & since that will be more obvious to the person who ends up reading your code later and has to spend time decoding what that line does. Ryan -- Ryan May Graduate Research Assistant School of Meteorology University of Oklahoma _______________________________________________ NumPy-Discussion mailing list NumPy-Discussion@scipy.org http://mail.scipy.org/mailman/listinfo/numpy-discussion