欧美成人午夜免费全部完,亚洲午夜福利精品久久,а√最新版在线天堂,另类亚洲综合区图片小说区,亚洲欧美日韩精品色xxx

扣丁學(xué)堂Python培訓(xùn)之實現(xiàn)矩陣轉(zhuǎn)置與矩陣相乘運(yùn)算示例

2019-03-26 13:10:43 1052瀏覽

今天扣丁學(xué)堂Python培訓(xùn)老師給大家分享一篇關(guān)于Python實現(xiàn)矩陣轉(zhuǎn)置與矩陣相乘運(yùn)算示例詳解,并結(jié)合實例形式分析了Python針對矩陣進(jìn)行轉(zhuǎn)置與相乘運(yùn)算的相關(guān)實現(xiàn)技巧與操作注意事項。



矩陣轉(zhuǎn)置

方法一:使用常規(guī)的思路

def transpose(M):
  # 初始化轉(zhuǎn)置后的矩陣
  result = []
  # 獲取轉(zhuǎn)置前的行和列
  row, col = shape(M)
  # 先對列進(jìn)行循環(huán)
  for i in range(col):
    # 外層循環(huán)的容器
    item = []
    # 在列循環(huán)的內(nèi)部進(jìn)行行的循環(huán)
    for index in range(row):
      item.append(M[index][i])
    result.append(item)
  return result

思路:矩陣的轉(zhuǎn)置就是從行變成列,列變成行

先定義一個最終存放矩陣的容器

先對列進(jìn)行循環(huán)i,并定義一個臨時數(shù)組用于存放數(shù)據(jù),在每次列的循環(huán)內(nèi)部,再次對行進(jìn)行循環(huán)j,取第M[j][i]個元素存入一個臨時數(shù)組中

在每次列循環(huán)完畢,將臨時數(shù)組存入最終數(shù)組中

當(dāng)列循環(huán)完畢,最終數(shù)組就是矩陣的轉(zhuǎn)置

方法二:使用zip解包

def transpose(M):
  # 直接使用zip解包成轉(zhuǎn)置后的元組迭代器,再強(qiáng)轉(zhuǎn)成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)]

在每次循環(huán)中將元組強(qiáng)轉(zhuǎn)成list并存入總list中

矩陣相乘

def matrixMultiply(A, B):
  # 獲取A的行數(shù)和列數(shù)
  A_row, A_col = shape(A)
  # 獲取B的行數(shù)和列數(shù)
  B_row, B_col = shape(B)
  # 不能運(yùn)算情況的判斷
  if(A_col != B_row):
    raise ValueError
  # 最終的矩陣
  result = []
  # zip 解包后是轉(zhuǎn)置后的元組,強(qiáng)轉(zhuǎn)成list, 存入result中
  BT = [list(row) for row in zip(*B)]
  # 開始做乘積運(yùn)算
  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]
      # 累加完成后,將數(shù)據(jù)存入新矩陣的行中
      rowItem.append(num)
    result.append(rowItem)
  return result

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

首先判斷是否可以相乘:前提條件是A的列與B的行要相同

我們可以畫圖理解:假如A是3行5列,B是5行2列,相乘結(jié)果是3行2列

將B轉(zhuǎn)置后是2行5列,我們稱之為BT,這樣A和BT都是5列了

則A的每行中的第i個元素*BT每行中的第i個元素,相加構(gòu)成新矩陣X的新行,循環(huán)A行,共3行,則新矩陣X就會逐步添加新行,待循環(huán)完畢,得到新矩陣X。

以上就是關(guān)于扣丁學(xué)堂Python培訓(xùn)之實現(xiàn)矩陣轉(zhuǎn)置與矩陣相乘運(yùn)算示例,希望對大家的學(xué)習(xí)有所幫助,想要了解更多關(guān)于Python開發(fā)方面內(nèi)容的小伙伴,請關(guān)注扣丁學(xué)堂Python培訓(xùn)官網(wǎng)、微信等平臺,扣丁學(xué)堂IT職業(yè)在線學(xué)習(xí)教育有專業(yè)的Python講師為您指導(dǎo),此外扣丁學(xué)堂老師精心推出的Python視頻教程定能讓你快速掌握Python從入門到精通開發(fā)實戰(zhàn)技能。扣丁學(xué)堂Python技術(shù)交流群:279521237。


扣丁學(xué)堂微信公眾號                          Python全棧開發(fā)爬蟲人工智能機(jī)器學(xué)習(xí)數(shù)據(jù)分析免費公開課直播間


【關(guān)注微信公眾號獲取更多學(xué)習(xí)資料】         【掃碼進(jìn)入Python全棧開發(fā)免費公開課】



查看更多關(guān)于"Python開發(fā)資訊"的相關(guān)文章>

標(biāo)簽: Python培訓(xùn) Python視頻教程 Python在線視頻 Python學(xué)習(xí)視頻 Python培訓(xùn)班

熱門專區(qū)

暫無熱門資訊

課程推薦

微信
微博
15311698296

全國免費咨詢熱線

郵箱:codingke@1000phone.com

官方群:148715490

北京千鋒互聯(lián)科技有限公司版權(quán)所有   北京市海淀區(qū)寶盛北里西區(qū)28號中關(guān)村智誠科創(chuàng)大廈4層
京ICP備2021002079號-2   Copyright ? 2017 - 2022
返回頂部 返回頂部