Как отсортировать двумерный массив целых чисел? В python 3 с numpy - PullRequest
1 голос
/ 28 мая 2020

Как я могу отсортировать массив следующим образом: arr=[[2,1,1,2,3,3],[1,1,2,3,2,2],[1,2,1,3,2,2]] Into : sorted_arr=[[1,1,2,3,2,2],[1,2,1,3,2,2],[2,1,1,2,3,3]]

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

Лог c состоит в том, что в моем реальном коде у меня есть 2 массива, и я их сравниваю, поэтому у меня есть вложенный l oop, и чтобы сделать его быстрее, если очень близкие элементы находятся в начале, это значительно ускорит мой код, поэтому я хочу его отсортировать. В массиве много массивов с разделенными целыми числами, поэтому я хочу отсортировать эти массивы, например, целое число будет 1

Ответы [ 2 ]

1 голос
/ 28 мая 2020
sorted(arr) 

у меня работает. Вы пробовали?

0 голосов
/ 28 мая 2020

Согласно вашему описанию, я думаю, вы хотите отсортировать строки в соответствии с столбцами, интерпретируя столбцы как ключи первичного порядка, вторичного порядка и т. Д. c. Если это так, numpy.lexsort может хорошо работать.

попробуйте код

import numpy as np

arr = np.array([[2,1,1,2,3,3],
                [1,1,2,3,2,2],
                [1,2,1,3,2,2]])
argsorted = np.lexsort(arr.transpose()[::-1])
print(arr[argsorted])

вы можете легко преобразовать arr[argsorted] в список list(arr[argsorted])

...