2010/1/18 Ernest Adrogué <[email protected]>: > Hi, > > This is hard to explain. In this code: > > reduce(np.logical_or, [m1 & m2, m1 & m3, m2 & m3]) > > where m1, m2 and m3 are boolean arrays, I'm trying to figure > out an expression that works with an arbitrary number of > arrays, not just 3. Any idea??
What's the shape of mi (dimension)? fixed or arbitrary number of dimension? a loop is the most memory efficient array broadcasting builds large arrays (and maybe has redundant calculations), but might be a one-liner or something like list comprehension m = [m1, m2, ... mn] reduce(np.logical_or, [mi & mj for (i, mi) in enumerate(m) for (j, mj) in enumerate(m) if i<j ]) >>> m = [np.arange(10)<5, np.arange(10)>3, np.arange(10)>8] >>> m [array([ True, True, True, True, True, False, False, False, False, False], dtype=bool), array([False, False, False, False, True, True, True, True, True, True], dtype=bool), array([False, False, False, False, False, False, False, False, False, True], dtype=bool)] >>> reduce(np.logical_or, [mi & mj for (i, mi) in enumerate(m) for (j, mj) in >>> enumerate(m) if i<j ]) array([False, False, False, False, True, False, False, False, False, True], dtype=bool) Josef > > Bye. > _______________________________________________ > NumPy-Discussion mailing list > [email protected] > http://mail.scipy.org/mailman/listinfo/numpy-discussion > _______________________________________________ NumPy-Discussion mailing list [email protected] http://mail.scipy.org/mailman/listinfo/numpy-discussion
