Given an image stored in a 2D Python array, we provide code for rotation by different degrees.
Clockwise by 90 degrees
- Transpose then reverse each row
def rotate(image):
n = len(image)
for i in range(n):
for j in range(i+1, n):
image[i][j], image[j][i] = image[j][i], image[i][j]
for i in range(n):
row = image[i]
l, r = 0, n-1
while l < r:
row[l], row[r] = row[r], row[l]
return image
Counterclockwise by 90 degrees
- Reverse each row then transpose
- Transpose is 180 degrees
def rotate_counterclockwise(image):
n = len(image)
for i in range(n):
row = image[i]
l, r = 0, n-1
while l < r:
row[l], row[r] = row[r], row[l]
l += 1
r -= 1
for i in range(n):
for j in range(i+1, n):
image[i][j], image[j][i] = image[j][i], image[i][j]
return image