转置矩阵
矩阵一
按照下边的矩阵进行转换
1 2 3 1 4 7 4 5 6 转置为 2 5 8 7 8 9 3 6 9
把矩阵数据转换为相应的数据结构,使用list存放每一行数据。
方法一:
直接修改原数据
matrix = [[1, 2, 3], [4, 5, 6], [7, 8, 9]] for i in range(len(matrix)): for j in range(i): matrix[j][i], matrix[i][j] = matrix[i][j], matrix[j][i] # 数据交换 # print(matrix) print(matrix) # 输出 [[1, 4, 7], [2, 5, 8], [3, 6, 9]]
方法二:
使用新的列表,不修改原数据
matrix = [[1, 2, 3], [4, 5, 6], [7, 8, 9]] new_matrix = [] for i in range(len(matrix)): new_matrix.append([]) for j in range(len(matrix[0])): new_matrix[i].append(0) # 最后生成 [[0, 0, 0], [0, 0, 0], [0, 0, 0]] for i, m in enumerate(matrix): for j, n in enumerate(m): new_matrix[j][i] = matrix[i][j] # 直接赋值 print(new_matrix)
矩阵二
按照下边的矩阵进行转换
1 2 3 1 4 转置为 2 5 4 5 6 3 6
转换为相应的数据结构,初始数据结构为 [[1, 2, 3], [4, 5, 6]] ,需要转换为 [[1, 4], [2, 5], [3, 6]] ,观察后发现这是把2行3列的矩阵转换为3行2列的矩阵。
方法一:
matrix = [[1, 2, 3], [4, 5, 6]] new_matrix = [] for i in range(3): # 循环3次,凑行 column = [] for j in range(2): # 每行数据有2个,即有两列数据 column.append(matrix[j][i]) new_matrix.append(column) print(new_matrix) # 输出 [[1, 4], [2, 5], [3, 6]]
方法二:
matrix = [[1, 2, 3], [4, 5, 6]] new_matrix = [] for column in matrix: for index, item in enumerate(column): if len(new_matrix) < 3: new_matrix.append([]) # 凑 [[], [], []] new_matrix[index].append(item) # [[1], [2], [3]] print(new_matrix)
方法三:
初始矩阵 [[1, 2, 3], [4, 5, 6]] ,与目标矩阵 [[1, 4], [2, 5], [3, 6]] 的各个值的索引是完全相反的。
矩阵元素 原矩阵索引 目标矩阵索引 1 [0, 0] [0, 0] 2 [0, 1] [1, 0] 3 [0, 2] [2, 0] 4 [1, 0] [0, 1] 5 [1, 1] [1, 1] 6 [1, 2] [2, 1]
所以可以先开辟目标矩阵的规模
matrix = [[1, 2, 3], [4, 5, 6]] new_matrix = [] for i in range(len(matrix[0])): new_matrix.append([]) for j in range(len(matrix)): new_matrix[i].append(0) # 填充0,最后为 [[0, 0],[0, 0],[0, 0]] # 想办法填充数据 for i, m in enumerate(matrix): for j, n in enumerate(m): # m为[1, 2, 3]时 new_matrix[j][i] = matrix[i][j] print(new_matrix)
声明:本文来自网络,不代表【好得很程序员自学网】立场,转载请注明出处:http://haodehen.cn/did169408