Как поменять местами некоторые строки и столбцы матрицы?

Есть матрица:

#    0, 1, 2
x = [
    [0, 1, 0],  # 0
    [1, 0, 1],  # 1
    [0, 1, 0]   # 2
]

Матрица представляет собой таблицу смежности графа.

Путём перестановок строк и столбцов нужно привести матрицу к виду:

I = [0, 1, 2]  # начальное положение строк и столбцов
P = [0, 2, 1]  # конечное положение строк и столбцов

#    0, 2, 1
x = [
    [0, 0, 1],  # 0
    [0, 0, 1],  # 2
    [1, 1, 0]   # 1
]

Ненулевые элементы могут быть где угодно.

Как реализовать это с помощью циклов?


Ответы (1 шт):

Автор решения: strawdog
import numpy as np
idx = [0, 2, 1] # новый порядок

x = np.array([  # приводим 2-м список в массив numpy
    [0, 1, 0],  # 0
    [1, 0, 1],  # 1
    [0, 1, 0]   # 2
])

res=x[idx]
res=res[:,idx]

res в таком случае будет:

array([[0, 0, 1],
       [0, 0, 1],
       [1, 1, 0]])
→ Ссылка