溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Python實現的矩陣轉置與矩陣相乘運算示例

發布時間:2020-09-26 16:35:00 來源:腳本之家 閱讀:467 作者:Johnny丶me 欄目:開發技術

本文實例講述了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中

矩陣相乘

def matrixMultiply(A, B):
  # 獲取A的行數和列數
  A_row, A_col = shape(A)
  # 獲取B的行數和列數
  B_row, B_col = shape(B)
  # 不能運算情況的判斷
  if(A_col != B_row):
    raise ValueError
  # 最終的矩陣
  result = []
  # zip 解包后是轉置后的元組,強轉成list, 存入result中
  BT = [list(row) for row in zip(*B)]
  # 開始做乘積運算
  for A_index in range(A_row):
    # 用于記錄新矩陣的每行元素
    rowItem = []
    for B_index in range(len(BT)):
      # num 用于累加
      num = 0
      for Br in range(len(BT[B_index])):
        num += A[A_index][Br] * BT[B_index][Br]
      # 累加完成后,將數據存入新矩陣的行中
      rowItem.append(num)
    result.append(rowItem)
  return result

說明: A矩陣與B矩陣的乘法運算,最終得到新的矩陣X , 思路

  • 首先判斷是否可以相乘:前提條件是A的列與B的行要相同
  • 我們可以畫圖理解:假如A是3行5列,B是5行2列,相乘結果是3行2列
  • 將B轉置后是2行5列,我們稱之為BT, 這樣 A 和 BT 都是5列了
  • 則A的每行中的第 i 個元素 * BT每行中的第 i 個元素,相加構成新矩陣X的新行,循環A行,共3行,則新矩陣X就會逐步添加新行,待循環完畢,得到新矩陣X

更多關于Python相關內容感興趣的讀者可查看本站專題:《Python數學運算技巧總結》、《Python數據結構與算法教程》、《Python函數使用技巧總結》、《Python字符串操作技巧匯總》及《Python入門與進階經典教程》

希望本文所述對大家Python程序設計有所幫助。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

亚洲午夜精品一区二区_中文无码日韩欧免_久久香蕉精品视频_欧美主播一区二区三区美女