标签:11 10 12 21 22 转置 ele print matrix
【李刚-21天通关Python-22】之 实操:定义计算矩阵转置的函数
方法一:嵌套循环转置
- 首先创建一个长度与原矩阵第一个元素长度相等的新列表
- 使用遍历原矩阵的每个元素(每个元素都是列表),再使用嵌套循环遍历每个元素,将列表中的元素添加到新列表对应的列表元素中
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]有几个元素代表原矩阵有几列
rt = [[] for i in m[0]]
for ele in m:
for i in range(len(ele)):
# rt[i]代表新矩阵的第i行
# ele[i]代表原矩阵当前行的第i列
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
'''
方法二:使用zip函数转置
- zip 函数的作用是合并多个序列:多个序列第一个元素合并成第一个元素,多个序列第二个元素合并成第二个元素,……
- 运用逆向参数收集
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), ……
# 逆向参数收集,将矩阵中的多个列表转换成多个参数传给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
'''
方法三:使用numpy模块转置
- numpy模块提供了 transpose() 函数执行转置,该函数返回值是numpy的内置类型:array
- 调用array的 tolist() 方法即可将array转换为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
return tolist(numpy.transpose(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
'''
标签:11,10,12,21,22,转置,ele,print,matrix 来源: https://blog.csdn.net/weixin_43796325/article/details/98626623
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。