@steve „s odpowiedź jest rzeczywiście najbardziej elegancki sposób to zrobić.
Aby uzyskać „prawidłowy” sposób, zobacz argument słowa kluczowego rzędu numpy.ndarray.sort
Musisz jednak zobaczyć tablicę jako tablicę z polami (tablica strukturalna).
„Właściwy” sposób jest dość brzydki, jeśli początkowo nie zdefiniowałeś swojej tablicy za pomocą pól ...
Jako szybki przykład posortuj go i zwróć kopię:
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]])
Aby posortować to na miejscu:
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 jest naprawdę najbardziej eleganckim sposobem na zrobienie tego, o ile wiem ...
Jedyną zaletą tej metody jest to, że argument „kolejność” to lista pól, według których należy uporządkować wyszukiwanie. Na przykład można sortować według drugiej kolumny, następnie trzeciej kolumny, a następnie pierwszej kolumny, podając kolejność = [„f1”, „f2”, „f0”].
np.sort(a, axis=0)
byłoby zadowalającym rozwiązaniem dla danej matrycy. Zasugerowałem edycję z lepszym przykładem, ale został odrzucony, chociaż w rzeczywistości pytanie byłoby o wiele bardziej jasne. Przykładem powinno być cośa = numpy.array([[1, 2, 3], [6, 5, 2], [3, 1, 1]])
z pożądaną wydajnościąarray([[3, 1, 1], [1, 2, 3], [6, 5, 2]])