транспонировать / повернуть блок матрицы в python

У меня есть матрица 6x6 в виде списка списков в python. Матрица разделена на 4 квадратных блока размером 3x3. Мне нужен способ транспонировать только 1 блок. Я могу сделать это, используя традиционный метод прохождения каждого элемента и копирования его в другой массив и обратно и так далее, но я хочу посмотреть, есть ли лучший способ (транспонирование матрицы в python может быть выполнено в одной строке с помощью zip)

, например, это представление матрицы и ее блоков

 block 1  block 2
+-------+-------+
| . . . | . . . |
| . . 2 | 1 . . |
| . . . | . . . |
+-------+-------+
| . . . | . . . |
| . . . | . . . |
| . 1 . | . . . |
+-------+-------+
 block 3  block 4

и rotate (3, справа) должен привести к этому

 block 1  block 2
+-------+-------+
| . . . | . . . |
| . . 2 | 1 . . |
| . . . | . . . |
+-------+-------+
| . . . | . . . |
| 1 . . | . . . |
| . . . | . . . |
+-------+-------+
 block 3  block 4

Я хочу найти метод, который принимает номер блока и вращает только этот блок слева или справа. Есть ли простой способ сделать это?

8
задан randomThought 10 November 2011 в 22:50
поделиться