La risposta di @steve è in realtà il modo più elegante di farlo.
Per il modo "corretto", consultare l'argomento della parola chiave order di numpy.ndarray.sort
Tuttavia, dovrai visualizzare il tuo array come un array con campi (un array strutturato).
Il modo "corretto" è abbastanza brutto se inizialmente non hai definito l'array con i campi ...
A titolo di esempio, per ordinarlo e restituire una copia:
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]])
Per ordinarlo sul posto:
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 è davvero il modo più elegante per farlo, per quanto ne so ...
L'unico vantaggio di questo metodo è che l'argomento "ordine" è un elenco dei campi per cui ordinare la ricerca. Ad esempio, è possibile ordinare in base alla seconda colonna, quindi alla terza colonna, quindi alla prima colonna fornendo order = ['f1', 'f2', 'f0'].
np.sort(a, axis=0)
sarebbe una soluzione soddisfacente per la matrice data. Ho suggerito una modifica con un esempio migliore ma sono stato respinto, anche se in realtà la domanda sarebbe molto più chiara. L'esempio dovrebbe essere similea = numpy.array([[1, 2, 3], [6, 5, 2], [3, 1, 1]])
all'output desideratoarray([[3, 1, 1], [1, 2, 3], [6, 5, 2]])