Re: Help! Delete Casses based on column
- To: mathgroup at smc.vnet.net
- Subject: [mg58301] Re: Help! Delete Casses based on column
- From: Jean-Marc Gulliet <jeanmarc.gulliet at gmail.com>
- Date: Sun, 26 Jun 2005 23:13:04 -0400 (EDT)
- Organization: The Open University, Milton Keynes, England
- References: <d9lfee$13q$1@smc.vnet.net>
- Sender: owner-wri-mathgroup at wolfram.com
tornado78 wrote: > Any help would be apreciated > > I need to take a large numeric matrix and remove all the rows that have a value less than X in column N > > Since its a large matrix im looking for an efficient algorithm. > > thanks > Hi Tornado :-) If I have understood correctly what you wanted, the following function should helps. In[1]:= removeRow[inmatrix_, forvalue_, incol_] := Module[{m = inmatrix, X = forvalue, N = incol}, m[[Complement[Range[Length[m]], Flatten[Position[m[[All,N]], _?(#1 < X & )]]]]]] In[2]:= mat = Table[Table[Random[], {1000}], {10000}]; In[3]:= Timing[newmat = removeRow[mat, 0.217193, 37]; ] Out[3]= {0.10899999999999999*Second, Null} In[4]:= {Dimensions[mat], Dimensions[newmat]} Out[4]= {{10000, 1000}, {7753, 1000}} Tested on a Pentium IV 2.6GHz 512Mo Physical Ram, Windows XP SP2, Mathematica 5.1. Best regards, /J.M.