@steve 's ist eigentlich die eleganteste Art, es zu tun.
Die "richtige" Methode finden Sie im order-Schlüsselwortargument von numpy.ndarray.sort
Sie müssen Ihr Array jedoch als Array mit Feldern (ein strukturiertes Array) anzeigen.
Der "richtige" Weg ist ziemlich hässlich, wenn Sie Ihr Array ursprünglich nicht mit Feldern definiert haben ...
Als kurzes Beispiel, um es zu sortieren und eine Kopie zurückzugeben:
In [1]: import numpy as np
In [2]: a = np.array([[1,2,3],[4,5,6],[0,0,1]])
In [3]: np.sort(a.view('i8,i8,i8'), order=['f1'], axis=0).view(np.int)
Out[3]:
array([[0, 0, 1],
[1, 2, 3],
[4, 5, 6]])
So sortieren Sie es an Ort und Stelle:
In [6]: a.view('i8,i8,i8').sort(order=['f1'], axis=0) #<-- returns None
In [7]: a
Out[7]:
array([[0, 0, 1],
[1, 2, 3],
[4, 5, 6]])
@ Steve's ist wirklich der eleganteste Weg, soweit ich weiß ...
Der einzige Vorteil dieser Methode besteht darin, dass das Argument "order" eine Liste der Felder ist, nach denen die Suche sortiert werden soll. Sie können beispielsweise nach der zweiten Spalte, dann nach der dritten Spalte und dann nach der ersten Spalte sortieren, indem Sie order = ['f1', 'f2', 'f0'] angeben.
np.sort(a, axis=0)
dies eine zufriedenstellende Lösung für die gegebene Matrix wäre. Ich schlug eine Bearbeitung mit einem besseren Beispiel vor, wurde aber abgelehnt, obwohl die Frage tatsächlich viel klarer wäre. Das Beispiel sollte so etwas wiea = numpy.array([[1, 2, 3], [6, 5, 2], [3, 1, 1]])
mit der gewünschten Ausgabe seinarray([[3, 1, 1], [1, 2, 3], [6, 5, 2]])