Как переставить блоки матрицы по часовой стрелке python 3?

Помогите, пожалуйста, разобраться с решением задачи.

Задача: пусть существует матрица А размером 2N*2N. Получите новую матрицу путём перестановки блоков размером N*N матрицы А по часовой стрелке.

Ниже представлен мой код. Так по моему представлению должны меняться элементы матрицы для решения поставленной задачи, но вывести новую матрицу я не могу.

Пожалуйста, помогите найти оптимальный способ решения этой задачи на Python 3.

Оригинал условия задачи

from random import randint

N = 4
M = 4
matrix = [[randint(1, 9) for i in range(N)] for i in range(M)]
for i in matrix:
    print()
for j in i:
    print(j, end=" ")

if ((i == 1 or i == 2) and (j == 1 or j == 2)):
    new_j = j + 2
new_i = i
if (i == 1 or i == 2) and (j == 3 or j == 4):
    new_i = i + 2
    new_j = j
if (i == 3 or i == 4) and (j == 3 or j == 4):
    new_j = j - 2
new_i = i
if (i == 3 or i == 4) and (j == 1 or j == 2):
    new_i = i - 2
new_j = j
for new_i in range(N):
    for new_j in range(M):
        print(matrix1)

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