Транспонирование матрицы
Транспонирование матрицы — это построение новой матрицы, в которой строки исходной матрицы становятся столбцами, а столбцы — строками. При этом элемент с индексами строки \(i\) и столбца \(j\) переходит на место с индексами \(j\) и \(i\).
Главная задача при программировании — правильно поменять местами индексы. В исходной матрице запись \(A[i][j]\) означает элемент в строке \(i\) и столбце \(j\). В результате транспонирования этот элемент записывают как \(B[j][i]\). Нумерация индексов обычно начинается с нуля, поэтому в циклах перебирают строки от \(0\) до \(m-1\), а столбцы — от \(0\) до \(n-1\).
Пусть \(A=\begin{pmatrix}1&2&3\\4&5&6\end{pmatrix}\). В ней 2 строки и 3 столбца, поэтому после транспонирования получится матрица 3 \(\times\) 2: \(A^T=\begin{pmatrix}1&4\\2&5\\3&6\end{pmatrix}\). Например, \(A[0][2]=3\) переходит в \(B[2][0]=3\).
m = 2 n = 3 A = [[1, 2, 3], [4, 5, 6]] B = [[0] * m for _ in range(n)] for i in range(m): for j in range(n): B[j][i] = A[i][j]
Транспонирование не означает разворот каждой строки или столбца. Порядок элементов сохраняется: элемент \(A[i][j]\) всегда переходит именно в \(B[j][i]\). Также нельзя оставить размер новой матрицы \(m \times n\): для неё нужны \(n\) строк и \(m\) столбцов. Операция отличается от циклического сдвига массива, при котором элементы перемещаются внутри одной последовательности.
Куда перейдёт элемент \(A[2][1]\) при транспонировании?
При квадратной матрице транспонированную матрицу можно записывать в тот же массив, меняя местами элементы по разные стороны главной диагонали. Для прямоугольной матрицы безопаснее создать отдельный массив, потому что его размеры отличаются от размеров исходного.
Главное
- При транспонировании строки становятся столбцами, а столбцы — строками.
- Правило индексов: \(B[j][i]=A[i][j]\).
- Матрица размера \(m \times n\) превращается в матрицу размера \(n \times m\).