純python處理矩陣:對矩陣進行轉置
阿新 • • 發佈:2019-02-06
方法一 :使用常規的思路
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中