Re: With Nearest
- To: mathgroup at smc.vnet.net
- Subject: [mg121124] Re: With Nearest
- From: Daniel Lichtblau <danl at wolfram.com>
- Date: Mon, 29 Aug 2011 20:01:00 -0400 (EDT)
- Delivered-to: l-mathgroup@mail-archive0.wolfram.com
- References: <j3anc3$hdo$1@smc.vnet.net> <201108290747.DAA15666@smc.vnet.net>
On 08/29/2011 02:47 AM, Ray Koopman wrote: > On Aug 27, 5:19 am, graser<gra... at gmail.com> wrote: >> Dear Mathematica group, >> I have a simple question for you. >> Let's say there is an array or matrix like >> >> AA = {{1.3, 1.5}, {21.5, 23.6}, {10, 19}}; >> >> If I want to extract a list whose second element is close to 20, >> How can I do it with Nearest function? >> Or is there any other method possible? >> ( In this case, the answer should be {10, 19} ) >> >> Thanks! > > If AA is long then > > AA[[ Ordering[ Abs[ AA[[All,2]] - 20 ], 1] [[1]] ]] > or > Extract[ AA, Ordering[ Abs[ AA[[All,2]] - 20 ], 1] ] > > will be much faster than anything using Nearest. That's quite true. In[6]:= aa = RandomReal[40, {10^5,2}]; In[7]:= Timing[func = Nearest[Map[#[[2]]->#&, aa]];] Out[7]= {0.17, Null} In[8]:= Timing[aa[[ Ordering[ Abs[ aa[[All,2]] - 20 ], 1] [[1]] ]]] Out[8]= {0.01, {23.7973, 19.9997}} In[9]:= Timing[func[20]] Out[9]= {0., {{23.7973, 19.9997}}} But the Nearest approach does have some added flexibility in that it can be reused for values other than 20. Whether this is important would depend on the application, of course. Daniel Lichtblau Wolfram Research
- References:
- Re: With Nearest
- From: Ray Koopman <koopman@sfu.ca>
- Re: With Nearest