# The Practice of Python-22 [Li Gang-21 Days Customs Clearance]: Define the Function of Calculating Matrix Transposition

### The Practice of Python-22 [Li Gang-21 Days Customs Clearance]: Define the Function of Calculating Matrix Transposition

Method 1: Nested cyclic transposition

• First, create a new list with the same length as the first element of the original matrix.
• Each element of the original matrix is traversed (each element is a list), and then each element is traversed by nested loops, adding the elements in the list to the list elements corresponding to the new list.
```matrix = [[1, 2, 3, 4], [5, 6, 7, 8], [9, 10, 11, 12]]

def print_matrix (m):
for ele in m:
for e in ele:
print("%2d" % e, end=' ')
print('')

def transform_matrix (m):
# m[0] Several elements represent several columns of the original matrix
rt = [[] for i in m[0]]
for ele in m:
for i in range(len(ele)):
# rt[i] represents the first row of the new matrix
# ele[i] represents the first column of the current row of the original matrix
rt[i].append(ele[i])
return rt

print_matrix(matrix)
'''
1   2   3   4
5   6   7   8
9  10  11  12
13  14  15  16
'''

print_matrix(transform_matrix(matrix))
'''
1   5   9
2   6  10
3   7  11
4   8  12
'''
```

Method 2: Using zip function transposition

• The purpose of the zip function is to merge multiple sequences: the first element of multiple sequences is merged into the first element, the second element of multiple sequences is merged into the second element,...
• Using Reverse Parameter Collection
```matrix = [[1, 2, 3, 4], [5, 6, 7, 8], [9, 10, 11, 12]]

def print_matrix (m):
for ele in m:
for e in ele:
print("%2d" % e, end=' ')
print('')

def transform_matrix (m):
# zip([1, 2, 3, 4], [5, 6, 7, 8], [9, 10, 11, 12]) -> (1, 5, 9), ......
# Reverse parameter collection, which converts multiple lists in the matrix into multiple parameters and passes them to zip
return list(zip(*m))

print_matrix(matrix)
'''
1   2   3   4
5   6   7   8
9  10  11  12
13  14  15  16
'''

print_matrix(transform_matrix(matrix))
'''
1   5   9
2   6  10
3   7  11
4   8  12
'''
```

Method 3: Using numpy module transposition

• Numpy module provides transpose() function to perform transpose, and the function return value is numpy's built-in type: array:
• Calling the array's tolist() method converts the array into a list list list
```matrix = [[1, 2, 3, 4], [5, 6, 7, 8], [9, 10, 11, 12]]

def print_matrix (m):
for ele in m:
for e in ele:
print("%2d" % e, end=' ')
print('')

def transform_matrix (m):
import numpy

print_matrix(matrix)
'''
1   2   3   4
5   6   7   8
9  10  11  12
13  14  15  16
'''

print_matrix(transform_matrix(matrix))
'''
1   5   9
2   6  10
3   7  11
4   8  12
'''
```

Keywords: Python

Added by sahel on Thu, 10 Oct 2019 12:16:37 +0300