MathGroup Archive 2005

[Date Index] [Thread Index] [Author Index]

Search the Archive

Re: logical indexing using more than one variable in a pure function


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.


  • Prev by Date: Re: logical indexing using more than one variable in a pure function
  • Next by Date: extra data in expressions
  • Previous by thread: Re: logical indexing using more than one variable in a pure function
  • Next by thread: Re: logical indexing using more than one variable in a pure function