@steve «s відповідь насправді найелегантніший спосіб зробити це.
"Правильний" спосіб див. Аргумент ключового слова порядку numpy.ndarray.sort
Однак вам потрібно буде переглянути свій масив як масив із полями (структурований масив).
"Правильний" спосіб є досить некрасивим, якщо ви спочатку не визначили свій масив з полями ...
Як короткий приклад, щоб сортувати його та повернути копію:
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]])
Щоб сортувати його на місці:
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]])
@ Стів справді є найелегантнішим способом зробити це, наскільки я знаю ...
Єдиною перевагою цього методу є те, що аргумент "замовлення" - це список полів, за якими можна замовити пошук. Наприклад, ви можете сортувати за другим стовпцем, потім за третім стовпцем, а потім за першим стовпцем, подаючи order = ['f1', 'f2', 'f0'].
np.sort(a, axis=0)
було б задовільним рішенням для даної матриці. Я запропонував редагувати кращий приклад, але був відхилений, хоча насправді питання було б набагато чіткішим. Приклад має бути щось на кшталтa = numpy.array([[1, 2, 3], [6, 5, 2], [3, 1, 1]])
бажаного результатуarray([[3, 1, 1], [1, 2, 3], [6, 5, 2]])