欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

細說NumPy數(shù)組的四種乘法的使用

 更新時間:2020年12月18日 09:59:05   作者:天元浪子  
這篇文章主要介紹了細說NumPy數(shù)組的四種乘法的使用,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧

當孔乙己說回字有四樣寫法的時候,相信各位都是這樣的表情吧?

在這里插入圖片描述

但是,如果孔乙己說NumPy數(shù)組有四種乘法的時候,各位大約就是這樣的表情了吧?

在這里插入圖片描述

實際上,NumPy數(shù)組乘法遠不止四種。為了在寫作和閱讀時保持清晰的邏輯和清醒的頭腦,本文僅對四種最常見的數(shù)組乘法給出詳細說明,并用一道數(shù)學題來演示向量點乘和叉乘的用法。

1. 星乘(*)

先聲明一下:星乘這個說法,是我自己創(chuàng)造的,因為我實在不知道數(shù)組的這種乘法有沒有其他高大上的名字,只好用運算符來表示了。所謂數(shù)組星乘,就是數(shù)組的對應元素相乘,這也是初學NumPy的同學最早接觸到的數(shù)組乘法。

>>> import numpy as np
>>> a = np.array([1,2,3])
>>> b = np.array([4,5,6])
>>> a*b
array([ 4, 10, 18])

對于多維數(shù)組,星乘的規(guī)則也是一樣。

>>> a = np.arange(6).reshape((2,3))
>>> b = np.arange(6,12).reshape((2,3))
>>> a
array([[0, 1, 2],
    [3, 4, 5]])
>>> b
array([[ 6, 7, 8],
    [ 9, 10, 11]])
>>> a*b
array([[ 0, 7, 16],
    [27, 40, 55]])

即使兩個數(shù)組的shape不一樣,只要滿足特定條件,同樣可以用星號相乘,且滿足交換律。

>>> a = np.arange(6).reshape((2,3))
>>> b = np.array([1,2,3])
>>> a
array([[0, 1, 2],
    [3, 4, 5]])
>>> b
array([1, 2, 3])
>>> a*b
array([[ 0, 2, 6],
    [ 3, 8, 15]])
>>> b*a
array([[ 0, 2, 6],
    [ 3, 8, 15]])

2. 點乘(np.dot)

在數(shù)學上,向量點乘就是兩個向量的對應位相乘后求和,因此向量點乘得到的是標量。

向量點乘的幾何意義是兩個向量的模之積再乘以二者夾角的余弦值。這意味著,如果兩個向量互相垂直,則其點積為零。反過來說,兩個不為零的向量的點積等于零,則兩個向量垂直。

numpy.dot()函數(shù)提供了點乘運算。對于一維數(shù)組,NumPy的點乘就是向量點乘,其結果是一個標量。對于多維數(shù)組,則需要滿足一定條件才能實現(xiàn)點乘,且其結果不再是標量,而是一個多維數(shù)組。比如,NumPy的矩陣相乘,就是二維數(shù)組的點乘,參與點乘的第一個數(shù)組的列數(shù)必須等于第二個數(shù)組的行數(shù)。

在這里插入圖片描述

>>> a = np.array([1,0,0])
>>> b = np.array([0,1,0])
>>> np.dot(a,b) # 向量a和向量b相互垂直,其點積為0
0
>>> a = np.arange(6).reshape((2,3))
>>> b = np.arange(6,18).reshape((3,4))
>>> np.dot(a,b) # 滿足點乘條件
array([[ 38, 41, 44, 47],
    [128, 140, 152, 164]])
>>> np.dot(b,a) # 不滿足點乘條件
Traceback (most recent call last):
 File "<pyshell#38>", line 1, in <module>
  np.dot(b,a)
 File "<__array_function__ internals>", line 6, in dot
ValueError: shapes (3,4) and (2,3) not aligned: 4 (dim 1) != 2 (dim 0)

3. 叉乘(np.cross)

在百度和知乎上,有很多人說叉積就是外積,也有人提出不同意見。我在這里僅使用叉乘或叉積等確定無誤的概念,以免誤人子弟。在數(shù)學上,二維平面的向量叉乘,其結果是以兩個向量為邊的菱形的面積,三維空間的向量叉乘,其結果是仍然是一個向量,且垂直于相乘的兩個向量,也就是參與相乘的兩個向量決定的平面的法向量。nunpy.cross()函數(shù)可以實現(xiàn)向量(一維數(shù)組)叉乘,也可以實現(xiàn)二維或三維數(shù)組的叉乘。

>>> a = np.array([2,0])
>>> b = np.array([2,2])
>>> np.cross(a,b) # 平面向量叉乘,其結果是以兩個向量為邊的菱形的面積
array(4)
>>> a = np.array([1,0,0])
>>> b = np.array([0,1,0])
>>> np.cross(a,b) # x軸叉乘y軸,得到z軸
array([0, 0, 1])
>>> np.cross(b,a) # 叉乘交換順序,得到反向的法向量
array([ 0, 0, -1])

4. 外乘(np.outer)

這里的外乘,類似于星乘,并不是通用的概念,也是我自己編造的一個說法,來源于numpy.outer()函數(shù)。從字面看,outer()函數(shù)更像是求外積,但從實際效果看,更像是笛卡爾直積,因此我這里用了“外乘”而不是“外積”。那么,outer()函數(shù)究竟能作什么呢?

>>> a = np.array([1,2,3])
>>> b = np.array([4,5,6,7])
>>> np.outer(a,b)
array([[ 4, 5, 6, 7],
    [ 8, 10, 12, 14],
    [12, 15, 18, 21]])

數(shù)組A外乘數(shù)組B,返回一個二維數(shù)組,這個二維數(shù)組的第i行是數(shù)組A的第i個元素星乘數(shù)組B。

5. 判斷兩條直線是否相交

假設abcd是歐氏空間中不重合的四個點,如何判斷過點ab的直線和過點cd的直線是否相交?如果使用空間解析幾何的方式來解決問題,對于一般程序員來說將是一個難題。不過,如果你熟悉NumPy,理解點積(np.dot)和叉積(np.cross)的話,解決這個問題就變得非常容易了。具體思路是這樣的:

計算向量ab和向量cd的叉積,得到向量orth如果orth的每一個元素都是零,則表示直線ab平行于直線cd,二者不可能相交;否則,orth就同時垂直于向量ab和向量cd計算向量orth和向量ac的點積,得到標量dp如果dp為零,表示向量orth垂直于向量ac,此時直線ab和直線cd在同一個平面上,且一定相交于某點

以上思路寫成代碼如下。

>>> a = np.array([1,2,3])
>>> b = np.array([4,5,6,7])
>>> np.outer(a,b)
array([[ 4, 5, 6, 7],
    [ 8, 10, 12, 14],
    [12, 15, 18, 21]])

到此這篇關于細說NumPy數(shù)組的四種乘法的使用的文章就介紹到這了,更多相關NumPy數(shù)組乘法內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

  • Python跳出多重循環(huán)的方法示例

    Python跳出多重循環(huán)的方法示例

    這篇文章主要介紹了Python跳出多重循環(huán)的方法示例,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2019-07-07
  • 利用Python批量識別電子賬單數(shù)據的方法

    利用Python批量識別電子賬單數(shù)據的方法

    這篇文章主要介紹了利用Python批量識別電子賬單數(shù)據的方法,本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2021-02-02
  • python使用pandas讀寫excel文件的方法實例

    python使用pandas讀寫excel文件的方法實例

    pandas是一個十分強大的數(shù)據處理工具,最近需要處理數(shù)據并輸入到excel,簡單列舉它的用法,這篇文章主要給大家介紹了關于python使用pandas讀寫excel文件的相關資料,文中通過實例代碼介紹的非常詳細,需要的朋友可以參考下
    2022-08-08
  • python3 使用OpenCV計算滑塊拼圖驗證碼缺口位置(場景示例)

    python3 使用OpenCV計算滑塊拼圖驗證碼缺口位置(場景示例)

    這篇文章主要介紹了python3 使用OpenCV計算滑塊拼圖驗證碼缺口位置,本文通過場景示例給大家詳細介紹,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2021-08-08
  • python中的函數(shù)嵌套和嵌套調用

    python中的函數(shù)嵌套和嵌套調用

    這篇文章主要介紹了python中的函數(shù)嵌套和嵌套調用方式,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-06-06
  • 用Python實現(xiàn)協(xié)同過濾的教程

    用Python實現(xiàn)協(xié)同過濾的教程

    這篇文章主要介紹了用Python實現(xiàn)協(xié)同過濾的教程,主要用于從大數(shù)據中抽取用戶信息偏好等等,需要的朋友可以參考下
    2015-04-04
  • 關于Python數(shù)據結構中字典的心得

    關于Python數(shù)據結構中字典的心得

    給大家詳細簡介了Python數(shù)據結構中字典的方法和使用心得,學習一下吧 ,有助于你更好的理解Python數(shù)據結構。
    2017-12-12
  • Numpy中np.random.rand()和np.random.randn() 用法和區(qū)別詳解

    Numpy中np.random.rand()和np.random.randn() 用法和區(qū)別詳解

    這篇文章主要介紹了Numpy中np.random.rand()和np.random.randn() 用法和區(qū)別詳解,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2020-10-10
  • python matplotlib 畫dataframe的時間序列圖實例

    python matplotlib 畫dataframe的時間序列圖實例

    今天小編就為大家分享一篇python matplotlib 畫dataframe的時間序列圖實例,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2019-11-11
  • python中json格式數(shù)據輸出的簡單實現(xiàn)方法

    python中json格式數(shù)據輸出的簡單實現(xiàn)方法

    下面小編就為大家?guī)硪黄猵ython中json格式數(shù)據輸出的簡單實現(xiàn)方法。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2016-10-10

最新評論