Re: Segregating the elements of a list based on given lower and upper bounds
- To: mathgroup at smc.vnet.net
- Subject: [mg77304] Re: [mg77205] Segregating the elements of a list based on given lower and upper bounds
- From: "R.G" <gobiithasan at yahoo.com.my>
- Date: Wed, 6 Jun 2007 07:24:17 -0400 (EDT)
Hi, Thank you for your answer. Now lets change the lists as:
A = {6.32553, 7.09956, 8.56784, 16.1871, 15.3989, 17.2285, 7.40711,
14.8876, 19.9068, 10.0834, 12.000};
B = {{0, 7}, {7, 11}, {11, 12}, {12, 15}, {15, 20}};
where the the first bound defined as 0<=i<7, it applies to the rest.
I have written the following code for segregating the list:
f[x_, y_] := Rest[FoldList[If[#2 >= x && #2 < y, Sow[#2], Null] &,
1,A]]
Table[class[i] =
Delete[f[B[[i, 1]], B[[i, 2]]],
Position[f[B[[i, 1]], B[[i, 2]]], Null]], {i, 1, Length[B]}];
Table[Length[class[i]], {i, 1, Length[B]}]
It does the segregation as I wanted: {1, 4, 0, 2, 4}. However, if
Length[A]=10,000, then it's quite slow. Is the code proper/efficient?
Thanks, R.G.
--- János <janos.lobb at yale.edu> wrote:
> Here is a newbie approach:
> /Your bounds do not correspond to the distribution you desire :)/
>
> I use lower case a,b,c
>
> In[2]:=
> sa = Sort[a]
>
> In[4]:=
> c = Last[Reap[i = 1;
> While[i <= Length[sa],
> j = 1; While[j <=
> Length[b],
> If[b[[j,1]] <=
> sa[[i]] <= b[[j,
> 2]], Sow[{b[[j]],
> sa[[i]]}, j]; j++,
> j++; Continue[]]; ]*
> i++; ]]]
> Out[4]=
> {{{{0, 7}, 6.32553}},
> {{{8, 10}, 8.56784}},
> {{{13, 15}, 14.8876}},
> {{{16, 18}, 16.1871},
> {{16, 18}, 17.2285}}}
>
> From there the distribution:
>
> In[22]:=
> ({#1[[1,1]], Length[
> #1]} & ) /@ c
> Out[22]=
> {{{0, 7}, 1}, {{8, 10}, 1},
> {{13, 15}, 1}, {{16, 18},
> 2}}
>
> János
> P.S Those ranges where you do not have a value you can Union it in
> with using Complement
>
>
> --------------------------------
> "I wish developing great products was as easy as writing a check. If
>
> that were the case, Microsoft would have some great products."
> --Steve Jobs
>
>
>
>
Send instant messages to your online friends http://uk.messenger.yahoo.com
- Follow-Ups:
- Re: Re: Segregating the elements of a list based on given lower and upper bounds
- From: János <janos.lobb@yale.edu>
- Re: Re: Segregating the elements of a list based on given lower and upper bounds