Как поменять местами некоторые строки и столбцы матрицы?
Есть матрица:
# 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]])