Prev: Sometimes the python shell cannot recognize the presence of anattribute.
Next: Fetch files from mail in python
From: Victor Eijkhout on 30 Mar 2010 19:25 I have two arrays, made with numpy. The first one has values that I want to use as sorting keys; the second one needs to be sorted by those keys. Obviously I could turn them into a dictionary of pairs and sort by the first member, but I think that's not very efficient, at least in space, and this needs to be done as efficiently as possible. I could use a hand. Victor. -- Victor Eijkhout -- eijkhout at tacc utexas edu
From: Alf P. Steinbach on 30 Mar 2010 19:45 * Victor Eijkhout: > I have two arrays, made with numpy. The first one has values that I want > to use as sorting keys; the second one needs to be sorted by those keys. > Obviously I could turn them into a dictionary of pairs and sort by the > first member, but I think that's not very efficient, at least in space, > and this needs to be done as efficiently as possible. > > I could use a hand. Just do the pairing, but in a 'list', not a dictionary (a dictionary is unordered and can't be sorted). You need to keep track of which keys belong to which values anyway. And anything in Python is a reference: you're not copying the data by creating the pairs. That is, the space overhead is proportional to the number of items but is independent of the data size of each item. Cheers & hth., - Alf
From: Steve Holden on 30 Mar 2010 19:56 Victor Eijkhout wrote: > I have two arrays, made with numpy. The first one has values that I want > to use as sorting keys; the second one needs to be sorted by those keys. > Obviously I could turn them into a dictionary of pairs and sort by the > first member, but I think that's not very efficient, at least in space, > and this needs to be done as efficiently as possible. > > I could use a hand. > Well, my first approach would be to do it as inefficiently as I can ( or at least no more efficiently than I can with a simple-minded approach) and then take it from there. If I believe this is not a premature optimization (a question about which I am currently skeptical) I'd suggest conversion to a list of pairs rather than a dict. Can you use zip() on numpy arrays? That would be the easiest way to create the list of pairs. regards Steve -- Steve Holden +1 571 484 6266 +1 800 494 3119 See PyCon Talks from Atlanta 2010 http://pycon.blip.tv/ Holden Web LLC http://www.holdenweb.com/ UPCOMING EVENTS: http://holdenweb.eventbrite.com/
From: MRAB on 30 Mar 2010 20:13 Victor Eijkhout wrote: > I have two arrays, made with numpy. The first one has values that I want > to use as sorting keys; the second one needs to be sorted by those keys. > Obviously I could turn them into a dictionary of pairs and sort by the > first member, but I think that's not very efficient, at least in space, > and this needs to be done as efficiently as possible. > > I could use a hand. > You could sort a list of the indices, using the first array to provide the keys.
From: Robert Kern on 30 Mar 2010 23:00 On 2010-03-30 18:25 , Victor Eijkhout wrote: > I have two arrays, made with numpy. The first one has values that I want > to use as sorting keys; the second one needs to be sorted by those keys. > Obviously I could turn them into a dictionary of pairs and sort by the > first member, but I think that's not very efficient, at least in space, > and this needs to be done as efficiently as possible. second[first.argsort()] Ask numpy questions on the numpy mailing list. http://www.scipy.org/Mailing_Lists -- Robert Kern "I have come to believe that the whole world is an enigma, a harmless enigma that is made terrible by our own mad attempt to interpret it as though it had an underlying truth." -- Umberto Eco
|
Next
|
Last
Pages: 1 2 Prev: Sometimes the python shell cannot recognize the presence of anattribute. Next: Fetch files from mail in python |