溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

python的廣播機(jī)制是怎樣的

發(fā)布時(shí)間:2022-01-06 14:59:48 來源:億速云 閱讀:201 作者:柒染 欄目:開發(fā)技術(shù)

本篇文章為大家展示了python的廣播機(jī)制是怎樣的,內(nèi)容簡明扼要并且容易理解,絕對(duì)能使你眼前一亮,通過這篇文章的詳細(xì)介紹希望你能有所收獲。

為什么會(huì)有廣播機(jī)制

python語言在設(shè)計(jì)的時(shí)候,就就考慮到用于兩個(gè)運(yùn)算的矩陣向量維度不匹配的問題。例如,我們有矩陣A,讓矩陣每個(gè)元素都加1,直接使用
A+1,就可以完成目的。這其中就用到了python的廣播機(jī)制,所以在很多python的第三方庫中,都支持廣播機(jī)制,例如Numpypytorch。

在矩陣或向量相關(guān)運(yùn)算中的廣播機(jī)制

1、一般的運(yùn)算

假設(shè)我們有一個(gè)矩陣A,一個(gè)矩陣B,它們的+ - *運(yùn)算,就是一一對(duì)應(yīng)元素的操作

python的廣播機(jī)制是怎樣的

2、一個(gè)矩陣一個(gè)向量的情況

矩陣 A ∈ R 3 × 3 A\in R^{3\times 3} A∈R3×3 與向量 b ∈ R 1 × 3 b\in R^{1\times 3} b∈R1×3 的運(yùn)算,向量 b ∈ R 1 × 3 b\in R^{1\times 3} b∈R1×3會(huì)根據(jù)矩陣A的維度,擴(kuò)展自身的維度, [ 1 × 3 ] → [ 3 × 3 ] [1\times 3]\to[3 \times 3] [1×3]→[3×3], 第一個(gè)維度大小是1,所以就會(huì)向列的方向擴(kuò)展,即復(fù)制多個(gè)行。如圖所示。

python的廣播機(jī)制是怎樣的

同樣,如果向量 b ∈ R 3 × 1 b\in R^{3\times 1} b∈R3×1 ,就會(huì)向行擴(kuò)展,即復(fù)制多個(gè)列。

python的廣播機(jī)制是怎樣的

3、兩個(gè)向量

如果兩個(gè)向量的size相同,那就沒話說了,運(yùn)算之后也還是向量,只有在兩個(gè)向量size不相同的時(shí)候才有廣播。
向量 a ∈ R 3 × 1 a\in R^{3\times 1} a∈R3×1 向量 b ∈ R 1 × 3 b\in R^{1\times 3} b∈R1×3 或者向量 b ∈ R 3 b\in R^{3} b∈R3,兩者的size就不一樣了。向量a會(huì)向維度大小為1的方向擴(kuò)張,b也是這樣。
值得注意的是,我們使用numpy的時(shí)候,

# 構(gòu)造一個(gè)向量 
import numpy as np
a = np.arange(10)  # (10,None)	
a是只有一個(gè)維度的。不管你是旋轉(zhuǎn)還是轉(zhuǎn)置,它都不會(huì)變化。要想實(shí)現(xiàn)廣播,就要給a增加一個(gè)維度
import numpy as np
a = np.arange(10)
a = np.expand_dims(a,1)  # (10,1)

4、矩陣乘法的廣播機(jī)制

python的廣播機(jī)制是怎樣的

上述內(nèi)容就是python的廣播機(jī)制是怎樣的,你們學(xué)到知識(shí)或技能了嗎?如果還想學(xué)到更多技能或者豐富自己的知識(shí)儲(chǔ)備,歡迎關(guān)注億速云行業(yè)資訊頻道。

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請(qǐng)聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI