В заголовке написано "сортировка 2D массивов". Несмотря на то, что спрашивающий использует массив (N,2)
-образный, можно обобщить решение unutbu для работы с любым массивом (N,M)
, поскольку это то, что люди действительно могут искать.
Можно transpose
массив и использовать запись среза с отрицательным step
, чтобы передать все столбцы в lexsort
в обратном порядке:
>>> import numpy as np
>>> a = np.random.randint(1, 6, (10, 3))
>>> a
array([[4, 2, 3],
[4, 2, 5],
[3, 5, 5],
[1, 5, 5],
[3, 2, 1],
[5, 2, 2],
[3, 2, 3],
[4, 3, 4],
[3, 4, 1],
[5, 3, 4]])
>>> a[np.lexsort(np.transpose(a)[::-1])]
array([[1, 5, 5],
[3, 2, 1],
[3, 2, 3],
[3, 4, 1],
[3, 5, 5],
[4, 2, 3],
[4, 2, 5],
[4, 3, 4],
[5, 2, 2],
[5, 3, 4]])