comp.lang.idl-pvwave archive
Messages from Usenet group comp.lang.idl-pvwave, compiled by Paulo Penteado

Home » Public Forums » archive » Re: How to get matching elements of array efficiently
Show: Today's Messages :: Show Polls :: Message Navigator
E-mail to friend 
Return to the default flat view Create a new topic Submit Reply
Re: How to get matching elements of array efficiently [message #69933 is a reply to message #69932] Tue, 23 February 2010 12:36 Go to previous message
penteado is currently offline  penteado
Messages: 866
Registered: February 2018
Senior Member
Administrator
On Feb 23, 5:11 pm, JJ <j...@cornell.edu> wrote:
> I'm looking for an efficient (non-loop) solution to this problem.  I
> have two arrays A, B.  The elements of A are not necessarily unique,
> nor is A necessarily sorted.  I'd like to find all the indices in A
> that match values that occur in B.
>
> For example, if A = [7,1,8,7,8], B = [7,8], the result should be
> [0,2,3,4].
>
> A and B can have many (order millions) of unique values, so I'd rather
> avoid a loop if I can.
>
> Is there any way to do this efficiently?

Are your values integers as in the example? If they are, and if there
are no big gaps in B (the number of elements of B is not much smaller
than max(B)-min(B)), histogram comes to mind:

h=histogram(A,binsize=1,min=min(b),max=max(b),reverse_indice s=ri)
if (max(h) gt 0L) then res=ri[n_elements(h)+1:*] else (deal with the
case of none found in b)

Which would give the result you want in res, but ordered by bin (their
order in B). In this example, res would be [0,3,2,4].
[Message index]
 
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Previous Topic: Intersection of polyline curve and polygon in 3D
Next Topic: Deconvolving a set of points

-=] Back to Top [=-
[ Syndicate this forum (XML) ] [ RSS ] [ PDF ]

Current Time: Fri Oct 10 16:19:53 PDT 2025

Total time taken to generate the page: 0.40572 seconds