您好,登錄后才能下訂單哦!
本篇文章為大家展示了python的廣播機(jī)制是怎樣的,內(nèi)容簡明扼要并且容易理解,絕對(duì)能使你眼前一亮,通過這篇文章的詳細(xì)介紹希望你能有所收獲。
python語言在設(shè)計(jì)的時(shí)候,就就考慮到用于兩個(gè)運(yùn)算的矩陣或向量維度不匹配的問題。例如,我們有矩陣A,讓矩陣每個(gè)元素都加1,直接使用
A+1,就可以完成目的。這其中就用到了python的廣播機(jī)制,所以在很多python的第三方庫中,都支持廣播機(jī)制,例如Numpy、pytorch。
假設(shè)我們有一個(gè)矩陣A,一個(gè)矩陣B,它們的+ - *運(yùn)算,就是一一對(duì)應(yīng)元素的操作
矩陣 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è)行。如圖所示。
同樣,如果向量 b ∈ R 3 × 1 b\in R^{3\times 1} b∈R3×1 ,就會(huì)向行擴(kuò)展,即復(fù)制多個(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)
上述內(nèi)容就是python的廣播機(jī)制是怎樣的,你們學(xué)到知識(shí)或技能了嗎?如果還想學(xué)到更多技能或者豐富自己的知識(shí)儲(chǔ)備,歡迎關(guān)注億速云行業(yè)資訊頻道。
免責(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)容。