[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: Finding values in an array
Bob Fugate <rqfugate@mindspring.com> writes:
> I have a vector containing a very, very large number of long integer values.
>
> I want to compare the value of each element in the vector to the values of
> the elements in the first column of a two column array until there is a
> match, and then extract the corresponding number in the second column (e.g.
> by using WHERE) of the array.
>
> Does anyone know a way to do this without using a loop? I realise that
> organizing the searched array as two rows may speed this up, however, I am
> trying to avoid using a loop. The numbers in the vector vary randomly (and
> it is important to preserve the original order) but the numbers in the first
> column of the array are sorted and increase monotonically (if that matters).
>
> I am new to IDL, so will greatly appreciate any suggestions.
If you can guarantee that there won't be any "misses", ie all
possibilities are in your second table, then VALUE_LOCATE is your
friend. This is new in IDL 5.3, but presumably you have at least this
version. If not, then see my web page for a drop-in substitute. :-)
You are basically done then!
wh = value_locate(col1, vector)
y = col2(wh)
Cogitate on that for awhile and I think you will be satisfied.
Good luck,
Craig
Web page: http://cow.physics.wisc.edu/~craigm/idl/idl.html (Main listing)
--
--------------------------------------------------------------------------
Craig B. Markwardt, Ph.D. EMAIL: craigmnet@cow.physics.wisc.edu
Astrophysics, IDL, Finance, Derivatives | Remove "net" for better response
--------------------------------------------------------------------------