Сортировка строк и столбцов матрицы
Как посортить строки/столбцы в матричке numpy по кастомному ключу (например, отсортировать столбцы по произведению 1ой и второй строки)? a.sort() делает что-то странное и не то.
Пример 1
[[1,8,3],
[4,5,6],
[7,2,9]]
Сортируем строки по возрастанию по второму столбцу:
[[7,2,9],
[4,5,6],
[1,8,3]]
Пример 2
[[1,8,3],
[4,5,6],
[7,2,9]]
Сортируем строки по возрастанию по произведение 2 и 3 столбцов:
[[7,2,9],
[1,8,3],
[4,5,6]]
Ответы (1 шт):
Автор решения: MaxU
→ Ссылка
Воспользуйтесь методом ndarray.argsort():
Пример 1:
In [26]: a
Out[26]:
array([[1, 8, 3],
[4, 5, 6],
[7, 2, 9]])
In [27]: res = a[a[:, 1].argsort()]
In [28]: res
Out[28]:
array([[7, 2, 9],
[4, 5, 6],
[1, 8, 3]])
Пример 2:
In [22]: a
Out[22]:
array([[1, 8, 3],
[4, 5, 6],
[7, 2, 9]])
In [23]: res = a[(a[:, 1] * a[:, 2]).argsort()]
In [24]: res
Out[24]:
array([[7, 2, 9],
[1, 8, 3],
[4, 5, 6]])