[Numpy-discussion] Quick array value assignment based on common values

John Salvatier jsalvati@u.washington....
Wed Aug 4 20:22:41 CDT 2010


Perhaps try the following:

1) sort x by x[:,0]
2) sort y by y[:,0]
3) loop through both at the same time building an array of indexes A that
tells you the index of y[i,0] in x or just building a new array z with the
value if you don't need them in order
4) if you do need them in order, unsort A by the sorting used to sort y and
then index into x using the unsorted A.

use
http://docs.scipy.org/doc/numpy/reference/generated/numpy.argsort.html#numpy.argsort

On Wed, Aug 4, 2010 at 6:09 PM, John Salvatier <jsalvati@u.washington.edu>wrote:

> How exactly are you looping? That sounds absurdly slow.
>
> What you need is a fast dictionary.
>
> On Wed, Aug 4, 2010 at 6:00 PM, Gökhan Sever <gokhansever@gmail.com>wrote:
>
>>
>>
>> On Wed, Aug 4, 2010 at 6:59 PM, <PHobson@geosyntec.com> wrote:
>>
>>> Hey folks,
>>>
>>> I've one array, x, that you could define as follows:
>>> [[1, 2.25],
>>>  [2, 2.50],
>>>  [3, 2.25],
>>>  [4, 0.00],
>>>  [8, 0.00],
>>>  [9, 2.75]]
>>>
>>> Then my second array, y, is:
>>> [[1, 0.00],
>>>  [2, 0.00],
>>>  [3, 0.00],
>>>  [4, 0.00],
>>>  [5, 0.00],
>>>  [6, 0.00],
>>>  [7, 0.00],
>>>  [8, 0.00],
>>>  [9, 0.00],
>>>  [10,0.00]]
>>>
>>> Is there a concise, Numpythonic way to copy the values of x[:,1] over to
>>> y[:,1] where x[:,0] = y[:,0]? Resulting in, z:
>>> [[1, 2.25],
>>>  [2, 2.50],
>>>  [3, 2.25],
>>>  [4, 0.00],
>>>  [5, 0.00],
>>>  [6, 0.00],
>>>  [7, 0.00],
>>>  [8, 0.00],
>>>  [9, 2.75],
>>>  [10,0.00]]
>>>
>>> My current task has len(x) = 25000 and len(y) = 350000 and looping
>>> through is quite slow unfortunately.
>>>
>>> Many thanks,
>>> -paul
>>>
>>>
>>> _______________________________________________
>>> NumPy-Discussion mailing list
>>> NumPy-Discussion@scipy.org
>>> http://mail.scipy.org/mailman/listinfo/numpy-discussion
>>>
>>
>> My simplest approach would be:
>>
>> y[x[:0]-1] = x
>>
>> # Providing the arrays are nicely ordered and 1st column x is all integer.
>>
>> --
>> Gökhan
>>
>> _______________________________________________
>> NumPy-Discussion mailing list
>> NumPy-Discussion@scipy.org
>> http://mail.scipy.org/mailman/listinfo/numpy-discussion
>>
>>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://mail.scipy.org/pipermail/numpy-discussion/attachments/20100804/d31327cc/attachment.html 


More information about the NumPy-Discussion mailing list