упорядочивание numy по одному столбцу, а затем по другому (как подмножество) при сохранении порядка строк - PullRequest
0 голосов
/ 07 февраля 2019

У меня есть пустой массив -

 a = np.array([[1,23],[5,4],[56,12], [7,29], [3,4], [2,15],[2,8], [4,8]])

и я хочу упорядочить его по столбцу 1, а затем по столбцу 0, сохранив при этом порядок строк.Мне удалось упорядочить его по оси 1 -

 a = a[a[:,1].argsort()]

 array([[ 5,  4],
   [ 3,  4],
   [ 4,  8],
   [ 2,  8],
   [56, 12],
   [ 2, 15],
   [ 1, 23],
   [ 7, 29]])

, но столбец 0 также должен быть в порядке возрастания в порядке возрастания столбца 1, например:

array([[ 3,  4],
   [ 5,  4],
   [ 2,  8],
   [ 4,  8],
   [56, 12],
   [ 2, 15],
   [ 1, 23],
   [ 7, 29]])

Какэто может быть достигнуто?

1 Ответ

0 голосов
/ 07 февраля 2019

Попробуйте использовать sorted с несколькими клавишами:

a = np.array([[1,23],[5,4],[56,12], [7,29], [3,4], [2,15],[2,8], [4,8]])

>>> np.array(sorted(a, key=lambda x: (x[1], x[0]))) # sort col 1 then col 0.
array([[ 3,  4],
       [ 5,  4],
       [ 2,  8],
       [ 4,  8],
       [56, 12],
       [ 2, 15],
       [ 1, 23],
       [ 7, 29]])
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...