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