Сортировка 2-мерного массива по 2-му столбцу, а затем по 1-му столбцу - PullRequest
1 голос
/ 02 мая 2019

У меня есть простой 2-мерный массив, который я хотел бы отсортировать по записи во 2-м столбце, и если идентичные записи существуют во 2-м столбце, то также отсортировать по 1-му столбцу и вернуть индексы этого нового массиваиз исходного массива a.Вот отправная точка:

import numpy as np
a = np.array([[0.1,2.134],[0.2,3.02],[0.1,2.5],[0.3,2.134],[0.1,3.02]])
a
>>> array([[0.1  , 2.134],
   [0.2  , 3.02 ],
   [0.1  , 2.5  ],
   [0.3  , 2.134],
   [0.1  , 3.02 ]])

, которую я затем могу отсортировать по 2-му столбцу для получения:

b = a[a[:,1].argsort()]
b
>>> array([[0.1  , 2.134],
   [0.3  , 2.134],
   [0.1  , 2.5  ],
   [0.2  , 3.02 ],
   [0.1  , 3.02 ]])

, но я бы хотел, чтобы это дополнительно сортировалось по 1-му столбцу.Мой желаемый вывод, начиная с a:

>>> array([[0.1  , 2.134],
   [0.3  , 2.134],
   [0.1  , 2.5  ],
   [0.1  , 3.02 ],
   [0.2  , 3.02 ]])

вместе с соответствующими индексами этого нового массива.

1 Ответ

0 голосов
/ 02 мая 2019

IIUC lexsort

a[np.lexsort((a[:,0], a[:,1]))]
array([[0.1  , 2.134],
       [0.3  , 2.134],
       [0.1  , 2.5  ],
       [0.1  , 3.02 ],
       [0.2  , 3.02 ]])
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...