2016-03-28 15 views
1

Ich habe eine KNN, und ich brauche teilweise eine Argsort eine Liste.Teilweise Argsort ein 2D-Array in Python

Hier ist, wie es jetzt in Code funktioniert:

sorted_distance_indices = distances.argsort(axis=1)[:,:self.parameters['k']+1] 

kplus_1_nearest_classes = self.trainingY[sorted_distance_indices] 

...etc. 

ich diese Antwort gefunden, How can I partially sort a list? Aber ich sehe nicht, wie die ‚heapification‘ für die argsort Aufgabe anzupassen, (und ich habe keine Idee, wie man Spracheninterop in Python tut, also sehe ich nicht, wie man den heapsort alg manuell tut) ...

+0

[Die native Python-Implementierung eines Priorität-Heaps] (https://docs.python.org/2/library/heapq.html) könnte helfen. –

Antwort

2

Ich denke, dass ich die Antwort habe.

Running:

sorted_distance_indices = np.argpartition(distances,self.parameters['k']+1,axis=1)[:,:self.parameters['k']+1] 

Ruft den Job zu erledigen. Offen für einen schnelleren Weg.