Re: Counting number of numbers in a large list between two valus
- To: mathgroup at smc.vnet.net
- Subject: [mg114540] Re: Counting number of numbers in a large list between two valus
- From: "Kevin J. McCann" <Kevin.McCann at umbc.edu>
- Date: Tue, 7 Dec 2010 06:46:05 -0500 (EST)
- References: <idigjf$ist$1@smc.vnet.net>
This is the fastest I got as well. Kevin P.S. I never knew about Clip or Unitize before. Thanks. On 12/6/2010 6:14 AM, Fred Simons wrote: > Op 6-12-2010 3:57, Lyle schreef: >> Dear Listers, >> >> I have a large (5-20million) one dimensional list of real numbers and >> I want to count the number of entries in the list that lie between 2 >> specific values (x1, x2). I need to run the function for a number of >> different ranges. >> >> ie. number of list entries (l), where x1<= l<= x2 >> > This seems to be a pretty fast solution: > > In[28]:= between[lst_, {x1_, x2_}] := > Total[Unitize[Clip[lst, {x1, x2}, {0, 0}]]] > > In[29]:= lst = RandomReal[{-100, 100}, {10^7}]; > between[lst, {-50, -40}] // Timing > > Out[30]= {0.125, 500249} > > Regards, > > Fred Simons > Eindhoven University of Technology > >