1. 程式人生 > >純python處理矩陣:對矩陣進行轉置

純python處理矩陣:對矩陣進行轉置

方法一 :使用常規的思路

def transpose(M):
    # 初始化轉置後的矩陣
    result = []
    # 獲取轉置前的行和列
    row, col = shape(M)
    # 先對列進行迴圈
    for i in range(col):
        # 外層迴圈的容器
        item = [] 
        # 在列迴圈的內部進行行的迴圈
        for index in range(row):
            item.append(M[index][i])
        result.append(item)
    return
result

思路:矩陣的轉置就是從行變成列, 列變成行

  • 先定義一個最終存放矩陣的容器
  • 先對列進行迴圈i,並定義一個臨時陣列用於存放資料,在每次列的迴圈內部,再次對行進行迴圈j,取第M[j][i]個元素存入一個臨時陣列中
  • 在每次列迴圈完畢,將臨時陣列存入最終陣列中
  • 當列迴圈完畢, 最終陣列就是矩陣的轉置

方法二:使用zip解包

def transpose(M):
    # 直接使用zip解包成轉置後的元組迭代器,再強轉成list存入最終的list中
    return [list(row) for row in zip(*M)]

思路:

  • zip 解包後,返回一個將多個可迭代物件組合成一個元組序列的迭代器,正如:
my_zip = list(zip(['a', 'b', 'c'], [1, 2, 3])) 
print(my_zip) # [('a', 1), ('b', 2), ('c', 3)]
  • 在每次迴圈中將元組強轉成list 並存入總list中