Изменение порядка матрицы в NumPy - PullRequest
0 голосов
/ 11 ноября 2019

Допустим, у меня есть произвольная матрица 3х3, где

           A  B  C
       A [[0, 1, 0],
       B [1, 0, 1],
       C [0, 1, 0]]

И у меня есть список labels = [0,1,0], который соответствует каждому столбцу матрицы.
Например, 0 будет соответствоватьстолбец 1, 1 будет соответствовать столбцу 2, и т. д.
Я хочу изменить порядок матрицы таким образом, чтобы она упорядочивалась в порядке возрастания меток.

Столбец 1 - это А, столбец 2 - этоB, а столбец 3 - C. Строка 1 - это A, строка 2 - это B, а строка 3 - это C. Порядок не должен связываться с тем, что представляет собой каждая строка / столбец.

Итак, моя ожидаемая матрица выходной матрицыбудет:

          C  A  B
      C [[0, 0, 1],
      A [0, 0, 1],
      B [1, 1, 0]]

1 Ответ

0 голосов
/ 11 ноября 2019

Мне потребовалось некоторое время, чтобы понять, но я думаю, что знаю, что вы хотите сделать сейчас.

>>> x = np.array([[0, 1, 0], [1, 0, 1], [0, 1, 0]])
>>> labels = [0, 1, 0]
>>> order = np.argsort(labels) # Find a sorted order of the given labels
>>> x[order][:, order] # Sort the rows and then the columns
array([[0, 0, 1],
       [0, 0, 1],
       [1, 1, 0]])
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...