Python學習第116課——numpy.dot和矩陣相乘的數學運算

2020-12-05 石問新

【每天幾分鐘,從零入門python編程的世界!】

關於numpy中數組的相乘,我們學習了對位相乘(用numpy.multiply、或*直接相乘,比如數組a和b的對位相乘就是numpy.multiply(a,b)或a*b)和一維數組的點乘(dot product,也有人叫inner product,比如一維數組a和b的點乘就是a.b)。

numpy中的點乘就是numpy.dot。對於二維以上的數組的點乘,就會用到矩陣相乘。

對於矩陣相乘,我們直接推導最一般最基本的情況,就是ndarray(我們可以把它理解為n維的數組)和mdarray(我們可以把它理解為m維的數組)這兩個數組進行相乘。所以我們必須要接觸matrix(矩陣)的一些概念,我們可以把matrix看做是一種非常有用的數據儲存的結構。在後面的物理、Fintech(科技金融)、圖像識別、機器學習等方面,都可以用到矩陣。

因此矩陣的數學原理也是非常重要的,感興趣的話可以去看看。現在我們只做一些最簡單的演示,如果現在對矩陣了解的不是很深入也沒關係,也沒有必要在現在的階段花很大精力去學習,我們後面的學習中會不斷的去重複和推演。現在先掌握最基礎的東西,然後在numpy中知道怎麼用矩陣相乘的方法去計算就可以了。

matrix multiplication(矩陣相乘)就是兩個矩陣形式結構的數據進行運算的方法。同時因為矩陣在空間上是有它的意義的,所以矩陣運算是一個很精妙的東西。

numpy.dot的計算方法有很多,相當於當兩個數組進行點乘的時候,它在內部對這兩個數組做了一個判斷,它會根據這兩個數組的不同維度結構,採用不同的計算方式,所以它會判斷對於兩個都是一維的數組,怎麼計算,兩個二維以上的數組,怎麼計算,比如二維以上數組的點乘,就是用我們現在介紹的矩陣相乘的方法計算。

●矩陣相乘

關於矩陣相乘,大學的線性代數課程裡面學過,現在我再大概的介紹一下最基本的運算。矩陣運算的其他的一些規則、規律,後面遇到了會再進行介紹。

例:

比如現在有兩個矩陣x和y。

x和y都是2*2的結構,就是2行2列的結構。

運算過程:

①矩陣相乘,首先要判斷第一個矩陣的列數和第二個矩陣的行數是否相等,如果相等才能進行相乘。

在本例中,x的列數是2,y的行數是2,所以可以相乘。

②其次,把第一個矩陣的列數和第二個矩陣的行數消掉,剩下的數字就是相乘後的結果的行數和列數

在本例中,把第一個矩陣的列數2和第二個矩陣的行數2消掉,剩下的數字就是第一個矩陣的行數2和第二個矩陣的列數2,所以相乘的結果是2行2列的矩陣。

假如說x是3行2列,y是2行5列,那麼相乘的結果,就是3行5列的矩陣。

③運算過程如下圖:

上圖是兩個2x2的矩陣相乘的運算過程和結果。

其他維度的矩陣相乘,相信你也知道如何運算了吧,規律是一樣的。如果有不明白的,可以評論區留言都可以。

以上就是矩陣相乘的運算方法和過程。

我是時問新,歡迎關注我。跟我一起從零開始學習Python,每天花一點時間,開啟python編程新世界的大門,領略新的風光,讓人生多一種可能!

相關焦點

  • Python學習第117課——numpy中dot的運用舉例
    【每天幾分鐘,從零入門python編程的世界!】上節我們學習了最基礎的matrix的運算,可能有小夥伴覺得這都要涉及高等數學知識了,確實如果你想做數據科學、做人工智慧,統計學、概率論等數學知識,尤其是算法是繞不過去的坎,但是不要怕!!!
  • 教程| 基礎入門:深度學習矩陣運算的概念和代碼實現
    在我們學習機器學習時,常常遇到需要使用矩陣提高計算效率的時候。如在使用批量梯度下降迭代求最優解時,正規方程會採用更簡潔的矩陣形式提供權重的解析解法。而如果不了解矩陣的運算法則及意義,甚至我們都很難去理解一些如矩陣因子分解法和反向傳播算法之類的基本概念。同時由於特徵和權重都以向量儲存,那如果我們不了解矩陣運算,代碼實現將變得十分艱難。
  • Python的武器庫05:numpy模塊(下)
    說到程式語言python,有一個著名的格言"餘生太短,只用python"。如果要分析為什麼會存在這麼一句格言?python的語法並不簡單,有複雜難懂的部分,之所以有這樣一句格言,是因為python中有很多強大的模塊,就像一個武器庫。
  • python數據分析基礎之numpy
    支持高級大量的維度數組與矩陣運算,是學習數據挖掘的基礎,今天我們就來總結下numpy的一些基礎用法。首先,在講numpy之前,我先帶領大家預習下大學學習過的矩陣的基礎知識。1、矩陣的基本概念矩陣:由m×n個數排列成 的m行n列的數表,稱為m行n列矩陣。實矩陣:元素是實數的矩陣。復矩陣:元素是負數的矩陣。
  • Python學習第119課——numpy中的broadcasting
    【每天幾分鐘,從零入門python編程的世界!】這節課我們學習numpy中的數據的一個多變的特性--broadcasting,broadcasting的官方的說明比較麻煩,我們這裡把它簡化一下,就把它當做「腦補」的意思。我們舉例來說明。
  • Python學習第114課——numpy中ndarray的四則運算
    【每天幾分鐘,從零入門python編程的世界!】我們為什麼要學習numpy?numpy其實就是number+Python的簡寫,意思就是通過Python對數據進行處理。要對數據進行處理,就少不了最基本的加減乘除等操作。
  • 教程| Numpy的線性代數運算
    訪問flyai.club,一鍵創建你的人工智慧項目線性代數(如矩陣乘法、矩陣分解、行列式以及其他方陣數學等)是任何數組庫的重要組成部分。不像某些語言(如MATLAB),通過*對兩個二維數組相乘得到的是一個元素級的積,而不是一個矩陣點積。
  • 數學學習如此容易:用Python學習線性代數
    還在為學習數學而發愁嗎?看完這篇文章,希望Python能幫助你消滅數學恐懼症。用NumPy進行線性代數運算線性代數是數學的一個重要分支,比如,我們可以使用線性代數來解決線性回歸問題。子程序包numpy.linalg提供了許多線性代數例程,我們可以用它來計算矩陣的逆、計算特徵值、求解線性方程或計算行列式等。對於NumPy來說,矩陣可以用ndarray的一個子類來表示。
  • Numpy基礎,一位Python大神的筆記,看了後我連Matlab都學會了!
    Stacking together different arrays矩陣的合併可以通過numpy中的hstack方法和vstack方法實現:常用矩陣運算符Numpy中的ndarray對象重載了許多運算符,使用這些運算符可以完成矩陣間對應元素的運算。
  • NumPy庫中的基本操作
    基本操作如今我們已經知曉如何使用numpy庫進行數組的定義以及新建,下面我們就該來學習數組的各種運算方法了。算術運算符數組的第一類運算是使用算術運算符進行的運算。最顯而易見的是為數組加上或乘以一個標量。這些運算符還可以用於兩個數組的運算。在NumPy中,這些運算符為元素級。
  • 細說NumPy數組的四種乘法,帶你走進向量運算的奇妙世界
    為了在寫作和閱讀時保持清晰的邏輯和清醒的頭腦,本文僅對四種最常見的數組乘法給出詳細說明,並用一道數學題來演示向量點乘和叉乘的用法。1. 星乘(*)先聲明一下:星乘這個說法,是我自己創造的,因為我實在不知道數組的這種乘法有沒有其他高大上的名字,只好用運算符來表示了。所謂數組星乘,就是數組的對應元素相乘,這也是初學NumPy的同學最早接觸到的數組乘法。
  • 資源|用Python和NumPy學習《深度學習》中的線性代數基礎
    本文系巴黎高等師範學院在讀博士 Hadrien Jean 的一篇基礎學習博客,其目的是幫助初學者/高級初學者基於深度學習和機器學習來掌握線性代數的概念。掌握這些技能可以提高你理解和應用各種數據科學算法的能力。
  • Python的武器庫04:numpy模塊(上)
    說到程式語言python,有一個著名的格言"餘生太短,只用python"。如果要分析為什麼會存在這麼一句格言?python的語法並不簡單,有複雜難懂的部分,之所以又這樣一句格言,是因為python中有很多強大的模塊,就像一個武器庫。Python正式由於這些模塊的出現,只要引入這個模塊,調用這個模塊的集成函數,問題迎刃而解;不需要從頭開始,節省了大量的時間。
  • 數學學習如此容易:用Python計算特徵值和特徵向量
    NumPy(Numerical Python) 是 Python 語言的一個擴展程序庫,支持大量的維度數組與矩陣運算,此外也針對數組運算提供大量的數學函數庫。特徵值 是方程式Ax=ax的標量解(scalar solutions),其中A是一個二維矩陣,而x是一維向量。 特徵向量 實際上就是表示特徵值的向量。提示:特徵值和特徵向量都是基本的數學概念,並且常用於一些重要的算法中,如 主成分分析(PCA) 算法。
  • 認識及安裝NumPy數學運算庫
    機器學習用到的數學運算離不開數學運算庫。數學運算庫可以讓我們擺脫諸如向量運算、矩陣運算、基本統計運算等複雜的數學運算,無需為這些複雜的數學運算編寫運算代碼,而是把精力用到科學研究上。NumPy是Python中科學計算的基礎軟體包,它提供了眾多數學運算工具,這些數學運算工具包括:線性代數中的矩陣和向量運算、傅立葉變換、多維數組運算、數據統計運算以及豐富的數學函數庫。在編寫機器學習算法時,需要對矩陣、向量進行各種數值計算。
  • 學習筆記,從NumPy到Scrapy,學習Python不能錯過這些庫
    一、核心庫與統計1.NumPynumpy(Numerical Python extensions)是一個第三方的Python包,用於科學計算。其前身是1995年就開始開發的一個用於數組運算的庫。經過了長時間的發展,基本上成了絕大部分Python科學計算的基礎包,當然也包括所有提供Python接口的深度學習框架。
  • 一鍵獲取新技能,玩轉NumPy數據操作
    它極大地簡化了向量和矩陣的操作及處理。python的不少數據處理軟體包依賴於NumPy作為其基礎架構的核心部分(例如scikit-learn、SciPy、pandas和tensorflow)。除了數據切片和數據切塊的功能之外,掌握numpy也使得開發者在使用各數據處理庫調試和處理複雜用例時更具優勢。
  • 好程式設計師Python培訓分享numpy簡介
    好程式設計師Python培訓分享numpy簡介:一、numpy簡介:NumPy是一個功能強大的Python庫,主要用於對多維數組執行計算。NumPy這個詞來源於兩個單詞-- Numerical和Python。NumPy提供了大量的庫函數和操作,可以幫助程式設計師輕鬆地進行數值計算。
  • python數據科學系列:numpy入門詳細教程
    numpy:numerical python縮寫,提供了底層基於C語言實現的數值計算庫,與python內置的list和array數據結構相比,其支持更加規範的數據類型和極其豐富的操作接口,速度也更快num