Python學習第117課——numpy中dot的運用舉例

2021-01-12 石問新

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

上節我們學習了最基礎的matrix的運算,可能有小夥伴覺得這都要涉及高等數學知識了,確實如果你想做數據科學、做人工智慧,統計學、概率論等數學知識,尤其是算法是繞不過去的坎,但是不要怕!!!我們現在入門階段知道有這個概念就行,能解決實際問題就行,後面遇到了問題再去深入。現在我們是為了入門,入門之後,你可以根據自身的底子去選擇發展方向。

閒話少敘,我們對numpy中的矩陣相乘做一些舉例說明。

我們還是使用上節的兩個矩陣為例。

上節我們用手寫推導矩陣相乘過程如下:

我們現在用代碼演示一下numpy中的矩陣相乘。我們知道如果兩個數組都是2維以上才能用矩陣相乘。

用代碼生成兩個2行2列的數組x和y(跟我們手寫推導時的矩陣x和y結構一樣,都是2行2列),然後進行矩陣相乘。

運行結果:

由上面代碼我們看到,運算結果和我們手寫推導出來的結果一模一樣。

另外numpy.dot有2種寫法:

①x.dot(y)

②np.dot(x,y)

我們知道兩個數組都是1維數組時的numpy.dot的,是計算空間向量的內積。現在我們計算兩個一維數組i和j的乘積。

假設i和j這兩個1維數組如下:

i = [3 0],j = [0 4]

把i和j看做空間向量,相當於i的坐標為(3,0),j的坐標為(0,4)。

如下圖:

我們根據上圖可知,i和y是垂直的,即夾角是90度,所以cos90°的值是0,所以i.j的內積就是0。

那麼我們在numpy中用代碼計算i和j的點乘,看看結果是不是0。

運算結果:

我們看到通過numpy的代碼運算結果,和我們用空間向量計算內積的結果是一致的。

大家可以自己在Python中輸入以上代碼試試。

總結:

學到這裡,我們就把numpy中數組的相乘主要分為兩種:

①通過*和np.multiply()直接相乘,也就是對位相乘。

②點乘,我們把np.dot方法進行相乘叫做點乘。

np.dot方法,如果兩個同時都是1維的數組相乘,運算過程相當於在空間意義上計算向量的內積;如果兩個同時都是2維以上的數組相乘,運算過程相當於兩個矩陣進行相乘。

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

相關焦點

  • Python學習第116課——numpy.dot和矩陣相乘的數學運算
    【每天幾分鐘,從零入門python編程的世界!】關於numpy中數組的相乘,我們學習了對位相乘(用numpy.multiply、或*直接相乘,比如數組a和b的對位相乘就是numpy.multiply(a,b)或a*b)和一維數組的點乘(dot product,也有人叫inner product,比如一維數組a和b的點乘就是a.b)。numpy中的點乘就是numpy.dot。對於二維以上的數組的點乘,就會用到矩陣相乘。
  • 用純NumPy碼一個RNN、LSTM:這是最好的入門方式了
    項目地址:https://github.com/krocki/dnc在這個項目中,作者主要使用 NumPy 實現了 DNC、RNN 和 LSTM,其中 RNN 代碼借鑑了 A.Karpathy 以前寫過的代碼。
  • Python最佳經典學習路線
    如何學習Python python語言基礎:(帶你熟悉python語言的特性,學會使用python開發環境,使用python開發一些簡單的案例) (1)Python3入門,數據類型,字符串 (2)判斷/循環語句,函數,
  • python初學者必看的學習路線 Python是近幾年比較火的程式語言
    Python是近幾年比較火的程式語言之一,因為人工智慧的火爆,讓很多人都想從事python開發。很多零基礎學員在學習python的時候都會走一些彎路,下面小編就為大家分享python學習路線圖,幫助零基礎學員在學習的時候少走彎路。 很多人都在問Python學習步驟應該如何安排?
  • Numpy學習打卡task03
    今天帶來的是Datawhal自主學習Numpy下學習打卡筆記第三部分—統計相關。本文大致介紹了數理統計的相關背景知識,以及神奇的本福特定律。本文素材來自網絡及Datawhale。統計學統計學是一門與數據的收集、組織、分析、解釋和呈現有關的學科。
  • 教程| Numpy的線性代數運算
    因此,NumPy提供了一個用於矩陣乘法的dot函數(既是一個數組方法也是numpy命名空間中的一個函數):.dot(y)等價於np.dot(x, y):一個二維數組跟一個大小合適的一維數組的矩陣點積運算之後將會得到一個一維數組numpy.linalg中有一組標準的矩陣分解運算以及諸如求逆和行列式之類的東西
  • 一文包會,教你如何熟練運用Python數值計算Numpy包
    在Python中,如果涉及到第三方包的使用,第一步要做的事情當然是將這個包導入啦!那咱們就看看Numpy包在使用時是如何進行導入的吧!,給numpy起了個別名哦,所以在程序中直接寫np就是指的numpy哦!
  • Python開發簡單爬蟲【學習資料總結】
    將URL存放在關係型數據中 將URL存儲在緩存資料庫中 三、網頁下載器和urllib2模塊 網頁下載器類似於瀏覽器,會將網際網路對應的網頁以HTML的形式下載到本地,存儲成本地文件或內存字符串,然後進行後續的分析。
  • Python學習第76課-git reset——hard
    【每天幾分鐘,從零入門python編程的世界!】學習git到現在,你可能會覺得,用git這麼麻煩,還不如用另存為version1、version2、version3這樣的文件,這種傳統的方法方便。git前期學習你可能覺得非常慢,但是一旦掌握它之後,你的效率將得到飛速的提升。隨著時間的推移,我們在工作區的文件有可能會發生各種意外的狀況,比如中病毒了,或者被人進行了惡意修改,或者經過多人之手,被改的面目全非,如果我們用git進行過版本控制和提交,就一點都不用怕。因為我們可以通過git reset --hard命令回到最後一次提交的正常的運行版本。
  • 數據科學中100個Numpy代碼技巧
    下面的100個練習都是從numpy郵件列表、stack overflow和numpy文檔中收集的。1.以np的名稱導入numpy包(★☆☆)import numpy as np2.列印numpy版本和配置(★☆☆)print(np.
  • 一鍵獲取新技能,玩轉NumPy數據操作
    除了數據切片和數據切塊的功能之外,掌握numpy也使得開發者在使用各數據處理庫調試和處理複雜用例時更具優勢。在本文中,將介紹NumPy的主要用法,以及它如何呈現不同類型的數據(表格,圖像,文本等),這些經Numpy處理後的數據將成為機器學習模型的輸入。
  • python教程之十GUI界面
    前言python提供了幾個開發GUI界面的庫, wsPython是python一款優秀的GUI圖形庫,要安裝wsPython庫後才可以使用。Jython庫是Python語言在Java中的完全實現,要安裝jython庫後才可以使用。
  • 圖解NumPy,這是理解數組最形象的一份教程了
    import numpy as np創建數組我們可以通過傳遞一個 python 列表並使用 np.array()來創建 NumPy 數組(極大可能是多維數組)。我們將下圖兩個數組稱為 data 和 ones:將它們按位置相加(即每行對應相加),直接輸入 data + ones 即可:當我開始學習這些工具時,我發現這樣的抽象讓我不必在循環中編寫類似計算。此類抽象可以使我在更高層面上思考問題。
  • 使用Python和Numpy構建神經網絡模型——波士頓房價預測案例
    圖片來自AIStudio不過呢,也正是因為深度學習的建模和訓練的過程存在通用性,在構建不同的模型時,只有模型三要素不同,其它步驟基本一致,深度學習框架才有用武之地。2.1.1 數據導入通過如下代碼讀入數據,了解下波士頓房價的數據集結構,數據存放在本地目錄下housing.data文件中。# 導入需要用到的packageimport numpy as npimport json# 讀入訓練數據datafile = '.
  • Numpy學習打卡task02
    今天帶來的是Datawhale零基礎入門Numpy的學習打卡筆記第二部分—隨機抽樣。本文大致介紹了隨機數的相關背景知識。本文素材來自網絡及datawhale。本文中的numpy.random就是偽隨機數生成器。對隨機性的各種應用導致了幾種不同的隨機數據生成方法的發展,其中有些方法自古以來就存在,在其行列中,有眾所周知的 "經典 "例子,包括擲骰子、擲硬幣、撲克牌的洗牌、《易經》中木籤的使用(用於佔卜),以及其他無數的技術。
  • Python真的值得學習嗎
    Python最近幾年發展的非常迅速,幾乎運用到各行各業。尤其是2017年人工智慧概念的興起,python的關注度也是越來越高。儘管目前它仍然無法和java等程式語言抗衡,但隨著未來人工智慧權重的提高,掌握python也就成為一種必然。它的開發效率比 C, Java 高很多,很多的創業公司當初為了把想法快速變成現實產品從而獲得投資資金,首選 Python作為開發語言。這估計也是當年推動python流行起來的另一個原因吧。它的標準庫和第三方庫也非常的強大,無論你想從事任何方向的技術編程,你幾乎都能找到相應的庫支持它。
  • 教你學習:Python-100-Days-01
    教你學習:Python-100-Days-01 本項目是參考項目內容,進行個人理解,和原有項目有出入,如想了解詳情,請自行百度去搜索項目為什麼用Python?python是腳本語言,學習簡單。包含很多環境的數學包,可以簡化我們的開發,方便我們數學計算。未來是數據的時代,java和python是必須要會的語言,是人工智慧和大數據的基礎。
  • 淺析思想政治課課堂教學舉例需要注意的問題
    為了正確地體現思想政治課的性質和作用,通俗易懂地講授思想政治課的內容,完成教學任務,達到教學目的,政治教師必須堅定不移地貫徹理論聯繫實際的原則。中學思想政治課的性質、特點決定了理論聯繫實際原則是這門課教學中的基本原則,它貫穿於這門課的整個教學過程,決定著思想政治課教學的方向和質量,其他教學原則都是理論聯繫實際原則的補充和具體化。
  • Python求解特徵向量和拉普拉斯矩陣
    學過線性代數和深度學習先關的一定知道特徵向量和拉普拉斯矩陣,這兩者是很多模型的基礎,有著很重要的地位,那用python要怎麼實現呢?numpy和scipy兩個庫中模塊中都提供了線性代數的庫linalg,scipy更全面些。
  • Python視頻教程網課編程零基礎入門數據分析網絡爬蟲全套Python...
    (6套課程) 注:零基礎全能篇中,針對windows和liunx系統均有兩套課程可供選擇學習,單純學python,哪個系統都一樣,初學者只需選擇自己熟悉的系統學習相應課程即可。基於liunx系統的python教程,課程裡也有liunx操作的詳細教學,不用擔心學習時不會操作liunx系統。