[Numpy-discussion] logic problem
josef.pktd at gmail.com
josef.pktd at gmail.com
Mon Jan 18 14:17:07 EST 2010
2010/1/18 Ernest Adrogué <eadrogue at gmx.net>:
> 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
> NumPy-Discussion at scipy.org
> http://mail.scipy.org/mailman/listinfo/numpy-discussion
>
More information about the NumPy-Discussion
mailing list