Re: Selecting Many Things Rather Than Selecting One Thing From Many
- To: mathgroup at smc.vnet.net
- Subject: [mg66202] Re: Selecting Many Things Rather Than Selecting One Thing From Many
- From: Gregory Lypny <gregory.lypny at videotron.ca>
- Date: Thu, 4 May 2006 05:19:57 -0400 (EDT)
- References: <e39k7e$cno$1@smc.vnet.net> <44588406.7040200@gmail.com>
- Sender: owner-wri-mathgroup at wolfram.com
I owe you a bottle of wine. And my homework continues. Thanks, Gregory On Wed, May 3, 2006, at 6:20 AM, Jean-Marc Gulliet wrote: > Gregory Lypny wrote: >> Hello everyone, >> I've discovered another use or need for the Select function, which >> I suspect requires mapping of some sort. >> In my previous posts, members of this MathGroup kindly showed me >> how to apply Select to many columns of a matrix at once. For >> example, >> (Select[#1, #1 > K & ] & ) /@ Transpose[theMatrix] >> will pull out all values greater than K, where K is a number such >> as 100. >> But suppose now that K is a list of numbers, such as K={34, 876, >> 199}, and I simply want to extract or identify all of the rows in >> the first column of theMatrix equal to any one of those numbers. >> How would I do that? I started with >> Select[theMatrix, #[[1]]==any element of list K] >> and I imagine something similar could be applied to the Position >> function. >> Any hint would be much appreciated. >> Gregory > Hi Gregory, > > I think the following expressions will direct you toward what you > want: > > In[1]:= > lst={{109,168,173,109},{4,143,200,90},{181,162,85,196},{30, > 108,86,34},{94,127,144,34},{199,109,195,188},{176, > 34,46,110},{95,27,160,109},{43, > 71,130,66},{56,148,109,163},{110,43,50,53},{32,34,16,95}}; > > In[2]:= > TableForm[lst] > > Out[2]//TableForm= > 109 168 173 109 > > 4 143 200 90 > > 181 162 85 196 > > 30 108 86 34 > > 94 127 144 34 > > 199 109 195 188 > > 176 34 46 110 > > 95 27 160 109 > > 43 71 130 66 > > 56 148 109 163 > > 110 43 50 53 > > 32 34 16 95 > > In[3]:= > K=100; > Select[lst,#1[[1]]>K&]//TableForm > > Out[4]//TableForm= > 109 168 173 109 > > 181 162 85 196 > > 199 109 195 188 > > 176 34 46 110 > > 110 43 50 53 > > In[5]:= > K={43,876,199}; > Select[lst,MemberQ[K,#1[[1]]]&]//TableForm > > Out[6]//TableForm= > 199 109 195 188 > > 43 71 130 66 > > In[7]:= > Position[lst[[All,1]],Alternatives@@K]//TableForm > > Out[7]//TableForm= > 6 > > 9 > > In[8]:= > Position[lst,{x_,___}/;MemberQ[K,x]]//TableForm > > Out[8]//TableForm= > 6 > > 9 > > Best regards, > Jean-Marc