最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

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

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

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

在這里插入圖片描述

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

在這里插入圖片描述

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

1. 星乘(*)

先聲明一下:星乘這個說法,是我自己創(chuàng)造的,因為我實在不知道數(shù)組的這種乘法有沒有其他高大上的名字,只好用運算符來表示了。所謂數(shù)組星乘,就是數(shù)組的對應(yīng)元素相乘,這也是初學(xué)NumPy的同學(xué)最早接觸到的數(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ù)學(xué)上,向量點乘就是兩個向量的對應(yīng)位相乘后求和,因此向量點乘得到的是標(biāo)量。

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

numpy.dot()函數(shù)提供了點乘運算。對于一維數(shù)組,NumPy的點乘就是向量點乘,其結(jié)果是一個標(biāo)量。對于多維數(shù)組,則需要滿足一定條件才能實現(xiàn)點乘,且其結(jié)果不再是標(biāo)量,而是一個多維數(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ù)學(xué)上,二維平面的向量叉乘,其結(jié)果是以兩個向量為邊的菱形的面積,三維空間的向量叉乘,其結(jié)果是仍然是一個向量,且垂直于相乘的兩個向量,也就是參與相乘的兩個向量決定的平面的法向量。nunpy.cross()函數(shù)可以實現(xiàn)向量(一維數(shù)組)叉乘,也可以實現(xiàn)二維或三維數(shù)組的叉乘。

>>> a = np.array([2,0])
>>> b = np.array([2,2])
>>> np.cross(a,b) # 平面向量叉乘,其結(jié)果是以兩個向量為邊的菱形的面積
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. 判斷兩條直線是否相交

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

計算向量ab和向量cd的叉積,得到向量orth如果orth的每一個元素都是零,則表示直線ab平行于直線cd,二者不可能相交;否則,orth就同時垂直于向量ab和向量cd計算向量orth和向量ac的點積,得到標(biāo)量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]])

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

相關(guān)文章

  • python中mechanize庫的簡單使用示例

    python中mechanize庫的簡單使用示例

    最近的項目中使用到了mechanize庫,下面寫個簡單使用的小例子給大家參考
    2014-01-01
  • python集合的創(chuàng)建、添加及刪除操作示例

    python集合的創(chuàng)建、添加及刪除操作示例

    這篇文章主要介紹了python集合的創(chuàng)建、添加及刪除操作,結(jié)合實例形式分析了Python集合的概念、功能及針對集合的創(chuàng)建、添加與刪除等相關(guān)操作實現(xiàn)技巧,需要的朋友可以參考下
    2019-10-10
  • np.concatenate()函數(shù)數(shù)組序列參數(shù)的實現(xiàn)

    np.concatenate()函數(shù)數(shù)組序列參數(shù)的實現(xiàn)

    本文主要介紹了np.concatenate()函數(shù)數(shù)組序列參數(shù)的實現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2023-03-03
  • Django中幾種重定向方法

    Django中幾種重定向方法

    這篇文章主要介紹了Django中幾種重定向方法,本文講解了使用HttpResponseRedirect、redirect、reverse以及配置文件中配置URL等方法,需要的朋友可以參考下
    2015-04-04
  • Python的Flask框架中web表單的教程

    Python的Flask框架中web表單的教程

    這篇文章主要介紹了Python的Flask框架中web表單的教程,表單是學(xué)習(xí)各個web框架中的基礎(chǔ)知識,需要的朋友可以參考下
    2015-04-04
  • Python實現(xiàn)的刪除重復(fù)文件或圖片功能示例【去重】

    Python實現(xiàn)的刪除重復(fù)文件或圖片功能示例【去重】

    這篇文章主要介紹了Python實現(xiàn)的刪除重復(fù)文件或圖片功能,結(jié)合實例形式分析了Python基于os與hashlib模塊針對文件的讀取、hash計算及重復(fù)性判定等相關(guān)操作技巧,需要的朋友可以參考下
    2019-04-04
  • python列表每個元素同增同減和列表元素去空格的實例

    python列表每個元素同增同減和列表元素去空格的實例

    今天小編就為大家分享一篇python列表每個元素同增同減和列表元素去空格的實例,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2019-07-07
  • 基于Python+Appium實現(xiàn)京東雙十一自動領(lǐng)金幣功能

    基于Python+Appium實現(xiàn)京東雙十一自動領(lǐng)金幣功能

    一年一度的雙十一即將來臨,各大平臺都在搞活動,京東天貓忙的不易樂乎,做任務(wù)領(lǐng)金幣的過程真的好無聊,今天小編給大家分享一篇教程通關(guān)Python+Appium實現(xiàn)京東雙十一自動領(lǐng)金幣功能,需要的朋友可以參考下
    2019-10-10
  • 詳解Python如何獲取列表(List)的中位數(shù)

    詳解Python如何獲取列表(List)的中位數(shù)

    本文通過圖文及實例代碼介紹了怎樣利用python獲取列表的中位數(shù),文章介紹的很詳細(xì),有需要的小伙伴們可以參考學(xué)習(xí)。
    2016-08-08
  • 關(guān)于pandas的離散化,面元劃分詳解

    關(guān)于pandas的離散化,面元劃分詳解

    今天小編就為大家分享一篇關(guān)于pandas的離散化,面元劃分詳解,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2019-11-11

最新評論

旅游| 交城县| 新化县| 都安| 兰考县| 军事| 视频| 榆社县| 昌图县| 射阳县| 万荣县| 兴义市| 渝中区| 沙坪坝区| 武山县| 金秀| 临桂县| 德化县| 齐河县| 宜兴市| 大荔县| 海南省| 垣曲县| 桃源县| 池州市| 裕民县| 余姚市| 保亭| 邢台县| 炎陵县| 略阳县| 东辽县| 高台县| 德格县| 山阳县| 荔波县| 潞城市| 卢龙县| 北辰区| 萨嘎县| 白水县|