Python定义计算矩阵转置的函数

定义计算矩阵转置的函数

1)使用循环进行转置

matrix = [[1, 2, 3, 4],[5, 6, 7, 8],[9, 10, 11, 12]]

# 打印矩阵
def printMatrix(m):
    for ele in m:
        for e in ele:
            print('%3d' % e, end='')
        print('')

# 转置矩阵
def transformMatrix(m):
    rt = [[] for i in m[0]]    # 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

printmatrix(matrix)
print('-'*40)
printmatrix(transformMatrix(matrix))
  1  2  3  4
  5  6  7  8
  9 10 11 12
----------------------------------------
  1  5  9
  2  6 10
  3  7 11
  4  8 12

2)使用zip()函数转置

说明:zip 函数合并多个序列:多个序列的第一个元素合并成第一个元素,多个序列第二个元素合并成第二个序列…

在这里插入图片描述

分析:将原矩阵做逆向参数收集

def transformMatrix(m):
    # 逆向参数收集,将矩阵中多个列表转换成多个参数,传给 zip
    return list(zip(*m))

printmatrix(matrix)
print('-'*40)
printmatrix(transformMatrix(matrix))
  1  2  3  4
  5  6  7  8
  9 10 11 12
----------------------------------------
  1  5  9
  2  6 10
  3  7 11
  4  8 12

3)使用numpy模块转置

说明:

  1. numpy 模块提供了 transpose() 函数执行转置,该函数的返回值是 numpy 的内置类型:array
  2. 调用 array 的 tolist() 方法可将 array 转换为 list 列表
import numpy

def transformMatrix(m):
    
    return numpy.transpose(m).tolist()

printmatrix(matrix)
print('-'*40)
printmatrix(transformMatrix(matrix))
  1  2  3  4
  5  6  7  8
  9 10 11 12
----------------------------------------
  1  5  9
  2  6 10
  3  7 11
  4  8 12

猜你喜欢

转载自blog.csdn.net/qq_36512295/article/details/94210180
今日推荐