日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程语言 > python >内容正文

python

python实现矩阵叉乘_矩阵乘法的纯Python实现 | 离开Python库!!

發(fā)布時(shí)間:2023/12/1 python 29 豆豆
生活随笔 收集整理的這篇文章主要介紹了 python实现矩阵叉乘_矩阵乘法的纯Python实现 | 离开Python库!! 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
點(diǎn)擊關(guān)注我哦

一篇文章帶你了解矩陣乘法的純Python實(shí)現(xiàn)

在《這篇文章》中,我們有簡(jiǎn)單提到“矩陣乘法”的相關(guān)知識(shí),如果你不記得了,可以復(fù)習(xí)一下這張圖片。

想起來(lái)了沒(méi)?本篇文章將深入探討在沒(méi)有機(jī)器學(xué)習(xí)庫(kù)的情況下如何從零實(shí)現(xiàn)矩陣乘法!

你有沒(méi)有想過(guò)在沒(méi)有任何復(fù)雜的機(jī)器學(xué)習(xí)庫(kù)的情況下處理機(jī)器學(xué)習(xí)問(wèn)題?畢竟多虧了那些模塊,才可以讓我們的某些操作幾乎可以在眨眼之間完成。

為了真正欣賞這些模塊的美觀和優(yōu)雅,讓我們從頭開始進(jìn)行代碼矩陣乘法,而無(wú)需任何機(jī)器學(xué)習(xí)庫(kù)或模塊。盡管這不是一個(gè)非常復(fù)雜的任務(wù),但這將有助于我們更好地學(xué)習(xí)核心概念并理解NumPy的重要性,它只需幾行代碼即可完成同一任務(wù)。

解決這個(gè)問(wèn)題的方法是從用戶那里獲取所有輸入。這是第一個(gè)和第二個(gè)矩陣的行數(shù)和列數(shù)。另外,根據(jù)每個(gè)矩陣的行數(shù)和列數(shù),我們將分別填充相應(yīng)的替代位置。

在進(jìn)行任何矩陣乘法之前,第一步是檢查兩個(gè)矩陣之間的這種運(yùn)算是否真的可行。這可以通過(guò)檢查第一個(gè)矩陣的列數(shù)是否等于第二個(gè)矩陣中的行數(shù)來(lái)判斷。這可以表述為:

矩陣A的行數(shù) = 矩陣B的列數(shù)

根據(jù)這個(gè)策略,我們可以制定我們的第一個(gè)代碼塊。這可以按如下所示:

r1 = int(input("Enter No of rows of 1st Matrix: "))c1 = int(input("Enter No of columns of 1st Matrix: "))r2 = int(input("Enter No of rows of 2nd Matrix: "))c2 = int(input("Enter No of columns of 2nd Matrix: "))# for matrix multiplication to be possible no of columns in matrix 1 = no of rows in matrix 2if c1==r2:else: print("\nNot possible")

這部分看起來(lái)非常簡(jiǎn)單。我們制定了僅在需要時(shí)執(zhí)行矩陣運(yùn)算的計(jì)劃。現(xiàn)在,讓我們看一下如何接收相應(yīng)行和列的輸入。

在繼續(xù)之前,讓我們提出一個(gè)我們正在努力解決的問(wèn)題。下圖是我們必須解決的問(wèn)題。我采用了一種更簡(jiǎn)單的3 * 3和3 * 3矩陣組合,但我保證這種方法可以解決任何復(fù)雜的問(wèn)題,即第一個(gè)矩陣的列與第二個(gè)矩陣的行匹配。

下圖顯示了相應(yīng)的行數(shù)和列數(shù):

現(xiàn)在,我們還制定了問(wèn)題陳述,讓我們從用戶那里獲得所需的輸入,然后開始著手解決這個(gè)問(wèn)題。這可以使用下面的代碼中完成:

????mat1?=?[]????mat2?=?[]????result?=?[]????print("\nEnter?The?Values?in?the?matrix?1:?") for i in range(r1): g=[] for j in range(c1): g.append(int(input()))????????mat1.append(g) for i in range(r1): for j in range(c1): print(mat1[i][j], end = " ") print()

在這里,我展示了如何遍歷行和列以輸入第一個(gè)矩陣的值。同樣,您也可以對(duì)第二個(gè)矩陣重復(fù)這些步驟。完成此步驟后,您的輸出應(yīng)如下所示:

現(xiàn)在我們已經(jīng)成功地完成了所有必需的輸入。是時(shí)候循環(huán)這些值并開始計(jì)算它們了。所以,為了闡明矩陣乘法是如何工作的,我們將行與它們各自的列相乘。

矩陣的第一個(gè)值如下所示:

(1*1) + (2*4) +?(3*7) =?(1) +?(8)?+ (21)?= 30

可以使用以下代碼完成此操作:

????for?r?in?range(r1): u=[] for s in range(c2): u.append(int(0)) result.append(u) for r in range(r1): for s in range(c2): result[r][s] print("\nResult is: \n") # iterate through rows of r1 for x in range(len(mat1)): # iterate through columns of c2 for y in range(len(mat2[0])): # iterate through rows of r2 for z in range(len(mat2)): result[x][y] += mat1[x][z] * mat2[z][y] for r in result: print(r)

這段代碼將相應(yīng)地計(jì)算結(jié)果,然后得到最終輸出,如下所示:

下圖顯示了已完成的相同計(jì)算。

現(xiàn)在,我們完成了與矩陣乘法的計(jì)算。但是,我很好奇這在numpy上如何工作。讓我們看看——

使用Numpy的實(shí)現(xiàn)過(guò)程:

在僅使用python成功完成了矩陣乘法的工作之后,我們現(xiàn)在可以看看帶有numpy模塊的類似公式的樣子。可以按照以下步驟進(jìn)行:

import?numpy?as?npa1 = np.array([[1,2,3], [4,5,6], [7,8,9]])a2 = np.array([[1,2,3], [4,5,6], [7,8,9]])Answer = np.matmul(a1,a2)Answer

通過(guò)對(duì)比發(fā)現(xiàn):使用Numpy進(jìn)行操作時(shí),幾乎沒(méi)有太多個(gè)人的操作,我們只需要知道在numpy中是如何計(jì)算的即可。但是至少讓我們了解到了一些新的東西:體會(huì)到我們使用的機(jī)器學(xué)習(xí)庫(kù)是多么美妙。

結(jié)論:

我們發(fā)現(xiàn),如果不使用現(xiàn)有的出色的機(jī)器學(xué)習(xí)庫(kù),即使是僅需幾行代碼即可完成的簡(jiǎn)單任務(wù)(如矩陣乘法),也將花費(fèi)更長(zhǎng)的時(shí)間來(lái)執(zhí)行。但是,盡管如此,理解核心基礎(chǔ)知識(shí)和理解這些操作是如何執(zhí)行的仍然很重要,我們?cè)诒疚闹写_實(shí)做到了這一點(diǎn)。在本文中,我們研究了如何在不使用任何庫(kù)的情況下對(duì)矩陣乘法進(jìn)行編程。

·? END? ·

HAPPY?LIFE

總結(jié)

以上是生活随笔為你收集整理的python实现矩阵叉乘_矩阵乘法的纯Python实现 | 离开Python库!!的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。