Сортировка 2D по рангу - PullRequest
0 голосов
/ 03 мая 2019

Я хочу отсортировать свой 2D-массив в соответствии с рангом другого массива

Я попробовал функцию sorted() и sort(), и она не работает. Я не уверен, правильно ли я его форматирую или как это лучше всего сделать.

array = (32,96)
ranked =  [57, 23, 68, 58, 25, 91, 70, 83, 77, 75, 89, 34, 49, 79, 66, 54, 67,
       44, 63, 52, 46, 20, 64, 10, 80, 33, 30, 29, 28, 26, 17, 27, 50, 51,
       92, 86, 69, 47,  0,  7,  3, 85, 18, 11, 13, 53,  8, 78, 82, 81, 14,
       74, 59, 32, 42, 39,  1, 31, 36, 19, 24,  5, 38,  9, 73, 71, 76, 87,
       41, 55, 94, 93, 84, 16, 90, 62, 48, 43, 72, 95, 65, 45, 61, 22, 21,
       15, 37, 88,  2, 40, 56,  6, 12, 60,  4, 35]
sortedarray = sorted(array,ranked)

для кода выше я получаю ошибку:

TypeError: 'list' object is not callable

в рейтинге имеет 96 значений, соответствующих второму измерению в исходном массиве.

1 Ответ

1 голос
/ 04 мая 2019

Чтобы отсортировать второе измерение array, вы можете сначала создать пустую sortedarray фигуру (32, 96), а затем заполнить новый массив в порядке, указанном ranked. Вот код, использующий случайные значения для array:

array = np.random.random((32,96))
ranked =  [57, 23, 68, 58, 25, 91, 70, 83, 77, 75, 89, 34, 49, 79, 66, 54, 67,
       44, 63, 52, 46, 20, 64, 10, 80, 33, 30, 29, 28, 26, 17, 27, 50, 51,
       92, 86, 69, 47,  0,  7,  3, 85, 18, 11, 13, 53,  8, 78, 82, 81, 14,
       74, 59, 32, 42, 39,  1, 31, 36, 19, 24,  5, 38,  9, 73, 71, 76, 87,
       41, 55, 94, 93, 84, 16, 90, 62, 48, 43, 72, 95, 65, 45, 61, 22, 21,
       15, 37, 88,  2, 40, 56,  6, 12, 60,  4, 35]

sortedarray = np.zeros(np.shape(array))
sortedarray[:, ranked] = array
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...