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

NumPy中np.dot與np.matmul對(duì)比實(shí)現(xiàn)

 更新時(shí)間:2025年06月05日 10:59:08   作者:進(jìn)一步有進(jìn)一步的歡喜  
本文主要介紹了NumPy中np.dot與np.matmul對(duì)比實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧

一、引言

在科學(xué)計(jì)算和數(shù)據(jù)分析領(lǐng)域,NumPy 是 Python 中一個(gè)至關(guān)重要的庫(kù),它提供了高效的多維數(shù)組對(duì)象以及對(duì)這些數(shù)組進(jìn)行各種操作的函數(shù)。其中,np.dot 和 np.matmul 是兩個(gè)常用的用于數(shù)組乘法的函數(shù)。雖然它們都能實(shí)現(xiàn)數(shù)組的乘法運(yùn)算,但在具體的使用場(chǎng)景和行為上存在一些差異。本文將深入對(duì)比 np.dot 和 np.matmul,幫助更好地理解和選擇合適的函數(shù)進(jìn)行數(shù)組乘法運(yùn)算。

二、基本概念與語(yǔ)法

(一)np.dot

np.dot 是 NumPy 中用于計(jì)算兩個(gè)數(shù)組點(diǎn)積的函數(shù)。它的語(yǔ)法如下:

np.dot(a, b, out=None)

其中,a 和 b 是要進(jìn)行點(diǎn)積運(yùn)算的數(shù)組,out 是可選參數(shù),用于指定輸出結(jié)果的數(shù)組。

(二)np.matmul

np.matmul 用于執(zhí)行兩個(gè)數(shù)組的矩陣乘法。其語(yǔ)法為:

np.matmul(x1, x2, out=None)

同樣,x1 和 x2 是參與矩陣乘法的數(shù)組,out 是可選的輸出數(shù)組。

三、一維數(shù)組的運(yùn)算對(duì)比

(一)np.dot

當(dāng) np.dot 用于兩個(gè)一維數(shù)組時(shí),它計(jì)算的是兩個(gè)數(shù)組的內(nèi)積,即對(duì)應(yīng)元素相乘后求和。

import numpy as np

a = np.array([1, 2, 3])
b = np.array([4, 5, 6])
result_dot = np.dot(a, b)
print(result_dot)  # 輸出: 1*4 + 2*5 + 3*6 = 32

(二)np.matmul

對(duì)于一維數(shù)組,np.matmul 也計(jì)算內(nèi)積,結(jié)果與 np.dot 相同。

result_matmul = np.matmul(a, b)
print(result_matmul)  # 輸出: 32

在一維數(shù)組的情況下,np.dot 和 np.matmul 的行為是一致的,都能高效地計(jì)算內(nèi)積。

四、二維數(shù)組的運(yùn)算對(duì)比

(一)np.dot

在處理二維數(shù)組時(shí),np.dot 執(zhí)行的是標(biāo)準(zhǔn)的矩陣乘法。即第一個(gè)矩陣的行與第二個(gè)矩陣的列對(duì)應(yīng)元素相乘后求和。

A = np.array([[1, 2], [3, 4]])
B = np.array([[5, 6], [7, 8]])
result_dot_2d = np.dot(A, B)
print(result_dot_2d)
# 輸出:
# [[1*5 + 2*7, 1*6 + 2*8],
#  [3*5 + 4*7, 3*6 + 4*8]]
# 即 [[19, 22],
#     [43, 50]]

(二)np.matmul

np.matmul 同樣用于二維數(shù)組的矩陣乘法,其結(jié)果與 np.dot 相同。

result_matmul_2d = np.matmul(A, B)
print(result_matmul_2d)
# 輸出:
# [[19, 22],
#  [43, 50]]

對(duì)于二維數(shù)組,np.dot 和 np.matmul 都能正確執(zhí)行矩陣乘法,并且結(jié)果一致。

五、高維數(shù)組的運(yùn)算對(duì)比

(一)np.dot

當(dāng)處理高維數(shù)組(維度大于 2)時(shí),np.dot 的行為相對(duì)復(fù)雜。它會(huì)將最后一個(gè)軸與倒數(shù)第二個(gè)軸進(jìn)行點(diǎn)積運(yùn)算。

C = np.random.rand(2, 3, 4)
D = np.random.rand(2, 4, 5)
result_dot_high = np.dot(C, D)
print(result_dot_high.shape)  # 輸出: (2, 3, 2, 5)

這里,np.dot 會(huì)將 C 的最后一個(gè)軸(長(zhǎng)度為 4)與 D 的倒數(shù)第二個(gè)軸(長(zhǎng)度為 4)進(jìn)行點(diǎn)積運(yùn)算,得到一個(gè)四維數(shù)組。

(二)np.matmul

np.matmul 在處理高維數(shù)組時(shí),會(huì)將最后兩個(gè)軸視為矩陣,進(jìn)行矩陣乘法,而前面的軸會(huì)被廣播。

result_matmul_high = np.matmul(C, D)
print(result_matmul_high.shape)  # 輸出: (2, 3, 5)

np.matmul 會(huì)將 C 和 D 的最后兩個(gè)軸分別視為矩陣進(jìn)行乘法,前面的軸(這里是第一個(gè)軸,長(zhǎng)度為 2)會(huì)進(jìn)行廣播,最終得到一個(gè)三維數(shù)組。

在高維數(shù)組的情況下,np.dot 和 np.matmul 的行為差異明顯,需要根據(jù)具體需求選擇合適的函數(shù)。

六、與標(biāo)量的運(yùn)算對(duì)比

(一)np.dot

np.dot 可以接受一個(gè)數(shù)組和一個(gè)標(biāo)量作為參數(shù),它會(huì)將數(shù)組的每個(gè)元素與標(biāo)量相乘。

scalar = 2
E = np.array([[1, 2], [3, 4]])
result_dot_scalar = np.dot(E, scalar)
print(result_dot_scalar)
# 輸出:
# [[2, 4],
#  [6, 8]]

(二)np.matmul

np.matmul 不支持與標(biāo)量進(jìn)行運(yùn)算,如果傳入標(biāo)量會(huì)引發(fā) TypeError

try:
    result_matmul_scalar = np.matmul(E, scalar)
except TypeError as e:
    print(f"Error: {e}")

七、使用建議

(一)根據(jù)數(shù)組維度選擇

  • 對(duì)于一維和二維數(shù)組,np.dot 和 np.matmul 功能基本相同,可根據(jù)個(gè)人習(xí)慣選擇。
  • 對(duì)于高維數(shù)組,如果需要將最后兩個(gè)軸視為矩陣進(jìn)行乘法并廣播前面的軸,建議使用 np.matmul;如果需要按照特定的軸進(jìn)行點(diǎn)積運(yùn)算,可使用 np.dot。

(二)考慮標(biāo)量運(yùn)算

如果需要對(duì)數(shù)組和標(biāo)量進(jìn)行乘法運(yùn)算,應(yīng)使用 np.dot,因?yàn)?nbsp;np.matmul 不支持標(biāo)量運(yùn)算。

八、總結(jié)

np.dot 和 np.matmul 都是 NumPy 中用于數(shù)組乘法的重要函數(shù),但它們?cè)诓煌S度數(shù)組和標(biāo)量運(yùn)算上存在差異。在一維和二維數(shù)組的情況下,二者功能相似;而在高維數(shù)組運(yùn)算中,np.matmul 更側(cè)重于矩陣乘法和軸廣播,np.dot 則有其特定的軸點(diǎn)積規(guī)則。同時(shí),np.dot 支持與標(biāo)量的乘法,而 np.matmul 不支持。

到此這篇關(guān)于NumPy中np.dot與np.matmul對(duì)比實(shí)現(xiàn)的文章就介紹到這了,更多相關(guān)NumPy np.dot np.matmul內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Python爬蟲(chóng)獲取圖片并下載保存至本地的實(shí)例

    Python爬蟲(chóng)獲取圖片并下載保存至本地的實(shí)例

    今天小編就為大家分享一篇Python爬蟲(chóng)獲取圖片并下載保存至本地的實(shí)例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2018-06-06
  • python GUI庫(kù)圖形界面開(kāi)發(fā)之PyQt5 UI主線程與耗時(shí)線程分離詳細(xì)方法實(shí)例

    python GUI庫(kù)圖形界面開(kāi)發(fā)之PyQt5 UI主線程與耗時(shí)線程分離詳細(xì)方法實(shí)例

    這篇文章主要介紹了python GUI庫(kù)圖形界面開(kāi)發(fā)之PyQt5 UI主線程與耗時(shí)線程分離詳細(xì)方法實(shí)例,需要的朋友可以參考下
    2020-02-02
  • Flask框架的學(xué)習(xí)指南之開(kāi)發(fā)環(huán)境搭建

    Flask框架的學(xué)習(xí)指南之開(kāi)發(fā)環(huán)境搭建

    本文是Flask框架的學(xué)習(xí)指南系列文章的第一篇,主要給大家講述的是開(kāi)發(fā)環(huán)境的搭建工作,有需要的小伙伴可以參考下
    2016-11-11
  • python?matplotlib各種畫圖

    python?matplotlib各種畫圖

    這篇文章主要介紹了python?matplotlib各種畫圖,matplotlib是一種優(yōu)秀的python數(shù)據(jù)可視化第三方庫(kù),使用matpltlib庫(kù)畫圖時(shí),先將它引入,加載里面的pyplot,并命名為plt,然后使用plot函數(shù)畫圖<BR>,下面一起來(lái)了解更詳細(xì)內(nèi)容吧
    2021-12-12
  • Python如何在列表尾部添加元素

    Python如何在列表尾部添加元素

    這篇文章主要介紹了Python如何在列表尾部添加元素,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-05-05
  • Python輸入的多種情況超詳細(xì)解讀(單行、多行及數(shù)組)

    Python輸入的多種情況超詳細(xì)解讀(單行、多行及數(shù)組)

    對(duì)于 Python 來(lái)說(shuō)有多種方式可以輸入數(shù)據(jù),下面這篇文章主要給大家介紹了關(guān)于Python輸入的多種情況超詳細(xì)解讀,分別是單行、多行及數(shù)組,文中通過(guò)代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2024-03-03
  • 詳解python中的變量

    詳解python中的變量

    這篇文章主要為大家詳細(xì)介紹了python的變量,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2021-11-11
  • Python文件時(shí)間操作步驟代碼詳解

    Python文件時(shí)間操作步驟代碼詳解

    這篇文章主要介紹了Python文件時(shí)間操作步驟代碼詳解,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-04-04
  • Python+matplotlib實(shí)現(xiàn)繪制等高線圖示例詳解

    Python+matplotlib實(shí)現(xiàn)繪制等高線圖示例詳解

    在matplotlib.pyplot中除了可以繪制常規(guī)圖表如折線、柱狀、散點(diǎn)等,還可以繪制常用在地理上的平面展示地型的等高線圖,本文主要為大家介紹了如何利用matplotlib繪制等高線圖,需要的可以參考一下
    2021-12-12
  • Python OpenCV直方圖均衡化詳解

    Python OpenCV直方圖均衡化詳解

    本文中將介紹如何使用OpenCV函數(shù)執(zhí)行直方圖均衡,并將其應(yīng)用于灰度和彩色圖像,以及將亮度歸一化并提高圖像的對(duì)比度。感興趣的小伙伴可以了解一下
    2022-02-02

最新評(píng)論