Re: logical indexing using more than one variable in a pure function
- To: mathgroup at smc.vnet.net
- Subject: [mg53368] Re: logical indexing using more than one variable in a pure function
- From: "Justin DSC Kaeser" <jastice at gmail.com>
- Date: Sat, 8 Jan 2005 02:39:39 -0500 (EST)
- References: <crkue3$akd$1@smc.vnet.net>
- Sender: owner-wri-mathgroup at wolfram.com
for your latter questions, it seems Map and MapThread will do just what
you want.
With
x1 = {2, 3, 4, 5, 6};
x2 = {6, 5, 4, 3, 2};
the function
# > 3 & /@ x1
will yield
{False, False, True, True, True}
and
MapThread[#1 > #2 &, {x1, x2}]
does an element-wise comparison for two equal-sized lists.
Thread[(#1 > #2) &[x1, x2]]
will do the same thing in this case
So to select elements of x1 which are larger than the corresponding
ones in x2 you could use
BooleanSelect[x1, MapThread[(#1 > #2) &, {x1, x2}] ]
This also produces that result, and more:
Reap[MapThread[Sow[#1, #1 > #2] &, {x1, x2}]]
see for yourself ;)
Which is the more efficient option for large lists I do not know.