Сортировка столбцов двоичной матрицы по старшему значению в питоне - PullRequest
0 голосов
/ 24 января 2019

Итак, у меня есть двумерный массив, который выглядит следующим образом: [[0, 1, 1][1, 0, 0][0,0,1]], где все значения хранятся как целые, но они представляют фактический бит. Значения в первом ряду считаются наиболее значимыми. Предполагая, что каждый столбец представляет собой целое число на основе битов в столбце, я хотел бы отсортировать столбцы в порядке убывания, чтобы он выглядел как [[1,1,0][0,0,1][0,0,1]]. Тем не менее, я очень заблудился о том, как добиться этого в Python. Было предложено использовать радикальную сортировку, но я заблудился о том, как это помогает мне в моем случае. Я написал две матрицы ниже, чтобы их было проще визуализировать.

011 110 100 001 001 100

Мой подход: читать каждый столбец, преобразовывать в int, сортировать целые, отображать обратно в столбец. Но этот подход может быть очень запутанным, если я работаю с матрицами с размерами 1000x10000

Но я чувствую, что должен быть более умный способ сделать это, особенно в python. Как мне подойти к этому?

Ответы [ 2 ]

0 голосов
/ 24 января 2019

Как я уже сказал, транспонировать, сортировать, транспонировать обратно:

a = [[0, 1, 1],[1, 0, 0],[0,0,1]]
a = list(zip(*a))
a.sort(reverse=True)
a = list(map(list,zip(*a)))
0 голосов
/ 24 января 2019

Попробуйте это:

a = [[0, 1, 1], [1, 0, 0], [0, 0, 1]]
b = list(map(list, zip(*a)))
c = sorted(b, reverse=True)
d = list(map(list, zip(*c)))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...