python实现矩阵叉乘_矩阵乘法的纯Python实现 | 离开Python库!!
一篇文章帶你了解矩陣乘法的純Python實現
在《這篇文章》中,我們有簡單提到“矩陣乘法”的相關知識,如果你不記得了,可以復習一下這張圖片。
想起來了沒?本篇文章將深入探討在沒有機器學習庫的情況下如何從零實現矩陣乘法!
你有沒有想過在沒有任何復雜的機器學習庫的情況下處理機器學習問題?畢竟多虧了那些模塊,才可以讓我們的某些操作幾乎可以在眨眼之間完成。
為了真正欣賞這些模塊的美觀和優雅,讓我們從頭開始進行代碼矩陣乘法,而無需任何機器學習庫或模塊。盡管這不是一個非常復雜的任務,但這將有助于我們更好地學習核心概念并理解NumPy的重要性,它只需幾行代碼即可完成同一任務。
解決這個問題的方法是從用戶那里獲取所有輸入。這是第一個和第二個矩陣的行數和列數。另外,根據每個矩陣的行數和列數,我們將分別填充相應的替代位置。
在進行任何矩陣乘法之前,第一步是檢查兩個矩陣之間的這種運算是否真的可行。這可以通過檢查第一個矩陣的列數是否等于第二個矩陣中的行數來判斷。這可以表述為:
矩陣A的行數 = 矩陣B的列數
根據這個策略,我們可以制定我們的第一個代碼塊。這可以按如下所示:
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")這部分看起來非常簡單。我們制定了僅在需要時執行矩陣運算的計劃。現在,讓我們看一下如何接收相應行和列的輸入。
在繼續之前,讓我們提出一個我們正在努力解決的問題。下圖是我們必須解決的問題。我采用了一種更簡單的3 * 3和3 * 3矩陣組合,但我保證這種方法可以解決任何復雜的問題,即第一個矩陣的列與第二個矩陣的行匹配。
下圖顯示了相應的行數和列數:
現在,我們還制定了問題陳述,讓我們從用戶那里獲得所需的輸入,然后開始著手解決這個問題。這可以使用下面的代碼中完成:
????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()在這里,我展示了如何遍歷行和列以輸入第一個矩陣的值。同樣,您也可以對第二個矩陣重復這些步驟。完成此步驟后,您的輸出應如下所示:
現在我們已經成功地完成了所有必需的輸入。是時候循環這些值并開始計算它們了。所以,為了闡明矩陣乘法是如何工作的,我們將行與它們各自的列相乘。
矩陣的第一個值如下所示:
(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)這段代碼將相應地計算結果,然后得到最終輸出,如下所示:
下圖顯示了已完成的相同計算。
現在,我們完成了與矩陣乘法的計算。但是,我很好奇這在numpy上如何工作。讓我們看看——
使用Numpy的實現過程:
在僅使用python成功完成了矩陣乘法的工作之后,我們現在可以看看帶有numpy模塊的類似公式的樣子。可以按照以下步驟進行:
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通過對比發現:使用Numpy進行操作時,幾乎沒有太多個人的操作,我們只需要知道在numpy中是如何計算的即可。但是至少讓我們了解到了一些新的東西:體會到我們使用的機器學習庫是多么美妙。
結論:
我們發現,如果不使用現有的出色的機器學習庫,即使是僅需幾行代碼即可完成的簡單任務(如矩陣乘法),也將花費更長的時間來執行。但是,盡管如此,理解核心基礎知識和理解這些操作是如何執行的仍然很重要,我們在本文中確實做到了這一點。在本文中,我們研究了如何在不使用任何庫的情況下對矩陣乘法進行編程。
·? END? ·
HAPPY?LIFE總結
以上是生活随笔為你收集整理的python实现矩阵叉乘_矩阵乘法的纯Python实现 | 离开Python库!!的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 重庆治疗卵巢功能减退最好的医院推荐
- 下一篇: 多重继承_Python 和 Java 基