立即学习:https://edu.csdn.net/course/play/24797/282184?utm_source=blogtoedu
练习11:行列数不同的矩阵转置
方法一:使用循环法转置
A = [[1,2,3,4],[5,6,7,8],[9,10,11,12]] #嵌套列表
def print_list1(m):
for n in m: #n为列表
for b in n:
print('%2d'%b,end=' ')
print()
def print_list2(m):
rt = [[]for i in m[0]] #m[0]的元素个数即为原矩阵的列数
for n in m:
for i in range(len(n)):
rt[i].append(n[i]) #rt[i]代表新矩阵的第i行;n[i]代表原矩阵的当前行的第i列
return rt
print_list1(A)
print('-'*40)
print_list1(print_list2(A))
方法二:使用zip()函数转置
A = [[1,2,3,4],[5,6,7,8],[9,10,11,12]] #嵌套列表
def print_list1(m):
for n in m: #n为列表
for b in n:
print('%2d'%b,end=' ')
print()
def print_list2(m):
return list(zip(*m)) #逆向参数收集,将矩阵中多个列表转换成多个参数传给zip
print_list1(A)
print('-'*10)
print_list1(print_list2(A))
方法三:使用numpy模块转置
A = [[1,2,3,4],[5,6,7,8],[9,10,11,12]] #嵌套列表
def print_list1(m):
for n in m: #n为列表
for b in n:
print('%2d'%b,end=' ')
print()
def print_list2(m):
import numpy
return numpy.transpose(m).tolist()
print_list1(A)
print('-'*10)
print_list1(print_list2(A))
最终输出结果:
>>>
1 2 3 4
5 6 7 8
9 10 11 12
----------------------------------------
1 5 9
2 6 10
3 7 11
4 8 12