MathGroup Archive 2012

[Date Index] [Thread Index] [Author Index]

Search the Archive

Re: Find Position of many elements in a large list.

  • To: mathgroup at smc.vnet.net
  • Subject: [mg127690] Re: Find Position of many elements in a large list.
  • From: Tomas Garza <tgarza10 at msn.com>
  • Date: Wed, 15 Aug 2012 03:34:06 -0400 (EDT)
  • Delivered-to: l-mathgroup@mail-archive0.wolfram.com
  • Delivered-to: l-mathgroup@wolfram.com
  • Delivered-to: mathgroup-newout@smc.vnet.net
  • Delivered-to: mathgroup-newsend@smc.vnet.net
  • References: <20120814082221.E17D66791@smc.vnet.net>

The lists needn't be sorted. Take the following example:
In[10]:= X = Range[1000000]; Y = RandomSample[Range[10000000], 10000];
The positions of X where there is a member of Y are found using
In[16]:= pos = Flatten[Position[X, #] & /@ Intersection[X, Y]]; // Timing

Out[16]= {8.39046, Null}
I don't know if 8.4 seconds is fast enough for your needs. This timing depends very much on the length of the intersection.
-Tomas



> From: benp84 at gmail.com
> Subject: Find Position of many elements in a large list.
> To: mathgroup at smc.vnet.net
> Date: Tue, 14 Aug 2012 04:22:21 -0400
>
> I have a sorted, 1-dimensional list X of 1,000,000 integers, and a sorted, 1-dimensional list Y of 10,000 integers.  Most, but not all, of the elements of Y are also elements of X.  I'd like to know the positions of the elements in X that are also in Y.  What's the fastest way to compute this?
>
> I have an algorithm in mind but it requires lots of custom code and I'm wondering if there's a clever way to do it with built-in functions.  Thanks.
>


  • Prev by Date: Re: Find Position of many elements in a large list.
  • Next by Date: working with nested lists
  • Previous by thread: Re: Find Position of many elements in a large list.
  • Next by thread: Re: Find Position of many elements in a large list.