 
  Data Structure Data Structure
 Networking Networking
 RDBMS RDBMS
 Operating System Operating System
 Java Java
 MS Excel MS Excel
 iOS iOS
 HTML HTML
 CSS CSS
 Android Android
 Python Python
 C Programming C Programming
 C++ C++
 C# C#
 MongoDB MongoDB
 MySQL MySQL
 Javascript Javascript
 PHP PHP
- Selected Reading
- UPSC IAS Exams Notes
- Developer's Best Practices
- Questions and Answers
- Effective Resume Writing
- HR Interview Questions
- Computer Glossary
- Who is Who
Rotate Matrix in Python
Rotating a matrix in python, can be done by utilizing various approaches like Transpose and Reverse method which is commonly used in rotating a matrix by converting the rows to columns and columns to rows.
Common Approaches
Some of the common methods, we can use to rotate a matrix by 90 degress clockwise are as follows.
- Layer by Layer Rotation 
- Temp Matrix Method 
- Transpose and reverse 
2D Matrix
Let us consider an n x n 2D matrix, whic we have to rotate this matrix 90 degress clockwise.
| 1 | 5 | 7 | 
| 9 | 6 | 3 | 
| 2 | 1 | 3 | 
Using Layer by Layer Rotation
This method includes rotating the matrix layer by layer, which doesn't require extra space for another matrix. The process of rotating a 2D matrix starts from the outermost layer and moving towards the inner layers. After it rotates the four corners of each layer.
Example
In the below example code the matrix is divided into four concentric layers, for each layer as follows:
- Top row is moved to the right 
- Right column is moved to the bottom 
- Bottom row is moved to the left 
- Left column is moved to the top 
class Solution: def rotate(self, matrix): n = len(matrix) for i in range(n // 2): for j in range(i, n - i - 1): # Save the top element temp = matrix[i][j] # Move left to top matrix[i][j] = matrix[n - j - 1][i] # Move bottom to left matrix[n - j - 1][i] = matrix[n - i - 1][n - j - 1] # Move right to bottom matrix[n - i - 1][n - j - 1] = matrix[j][n - i - 1] # Move top to right matrix[j][n - i - 1] = temp return matrix ob1 = Solution() print(ob1.rotate([[1, 5, 7], [9, 6, 3], [2, 1, 3]]))
Input
[[1,5,7],[9,6,3],[2,1,3]]
Output
[[2, 9, 1], [1, 6, 5], [3, 3, 7]]
Rotated Matrix
| 2 | 9 | 1 | 
| 1 | 6 | 5 | 
| 3 | 3 | 7 | 
Using Temp Matrix Method
As the name Implies this method creates a temporary matrix to store the rotated matrix. The original matrix is updated with rotated elements after creating the temporary matrix.
Example
In the below example code the 'temp_matrix' initialize a temporary matrix, which stores the rotated elements. populating the temporary matrix by extracting the elements from top to bottom and placing them as a row.
class Solution: def rotate(self, matrix): temp_matrix = [] column = len(matrix) - 1 # Create the rotated matrix for column in range(len(matrix)): temp = [] for row in range(len(matrix) - 1, -1, -1): temp.append(matrix[row][column]) temp_matrix.append(temp) # Copy the rotated matrix back to the original matrix for i in range(len(matrix)): for j in range(len(matrix)): matrix[i][j] = temp_matrix[i][j] return matrix ob1 = Solution() print(ob1.rotate([[10, 15, 27], [11, 16, 8], [43, 17, 35]]))
Input
[[10, 15, 27], [11, 16, 8], [43, 17, 35]]
Output
[[43, 11, 10], [17, 16, 15], [35, 8, 27]]
Rotated Matrix
| 43 | 11 | 10 | 
| 17 | 16 | 15 | 
| 35 | 8 | 27 | 
Using Transpose and reverse
This method is efficient and commonly used and the proces of rotating matrix involves two main steps are as follows below.
- Transpose the matrix : Converting all the rows to columns and columns to rows of the matrix. 
- Reversing each row(elements) : In the next step Reversing the elements in each row to get our required rotation. 
Example
In the below example code, the element at position '(i,j)' is swapped with the elements at position '(j,i)' and each row is reversed to get the required rotation of the matrix.
class Solution: def rotate(self, matrix): n = len(matrix) # Transpose the matrix for i in range(n): for j in range(i, n): matrix[i][j], matrix[j][i] = matrix[j][i], matrix[i][j] # Reverse each row for i in range(n): matrix[i].reverse() return matrix ob1 = Solution() print(ob1.rotate([[1, 5, 7], [9, 6, 3], [2, 1, 3]]))
Input
[[1,5,7],[9,6,3],[2,1,3]]
Output
[[2, 9, 1], [1, 6, 5], [3, 3, 7]]
Rotated Matrix
| 2 | 9 | 1 | 
| 1 | 6 | 5 | 
| 3 | 3 | 7 | 
