numpy數(shù)組廣播的機(jī)制
numpy數(shù)組的廣播功能強(qiáng)大,但是也同時(shí)讓人疑惑不解,現(xiàn)在讓我們來談?wù)勂渲械脑怼?/p>
廣播原則:
如果兩個(gè)數(shù)組的后緣維度(即:從末尾開始算起的維度)的軸長(zhǎng)相符或其中一方的長(zhǎng)度為1,則認(rèn)為它們是廣播兼容的,廣播會(huì)在缺失和(或)長(zhǎng)度為1的軸上進(jìn)行.
上面的原則很重要,是廣播的指導(dǎo)思想,下面我們來看看例子。
1.其實(shí)在最簡(jiǎn)單的數(shù)組與標(biāo)量數(shù)字之間的運(yùn)算就存在廣播,只是我們把它看作理所當(dāng)然了。

2.再看下一個(gè)例子,這個(gè)大家都會(huì)一致認(rèn)為這是廣播了

根據(jù)廣播原則:arr1的shape為(4,1),arr2的shape為(3,),所以會(huì)同時(shí)在兩個(gè)軸發(fā)生廣播,arr1的shape變成(4,3),而arr2的shape變成(4,3),所以結(jié)果也為(4,3).
其實(shí)代碼中發(fā)生了下圖描述的事情:

3.同理,我們可以得到三維數(shù)組的廣播情況

根據(jù)廣播原則分析:arr1的shape為(3,4,2),arr2的shape為(4,2),它們的后緣軸長(zhǎng)度都為(4,2),所以可以在0軸進(jìn)行廣播,arr2的shape變?yōu)?3,4,2).
下面說明一下三維數(shù)組在各維度的廣播形狀需求:

以上所有形狀都可以發(fā)生廣播,你可以用我們開篇所說的廣播原則進(jìn)行驗(yàn)證。
最后,再來說一個(gè)易錯(cuò)的實(shí)際例子。

arr減去他在1軸上的平均值,會(huì)出錯(cuò)?看看為啥。
因?yàn)閍rr.mean(1)產(chǎn)生的shape為(4,),根據(jù)廣播原則,較小的數(shù)組的后緣維度必須為1,
所以需要將arr.mean變成(4,1),你所期望的結(jié)果如下:

參考:《利用Python進(jìn)行數(shù)據(jù)分析》
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
tensorflow轉(zhuǎn)onnx的實(shí)現(xiàn)方法
本文主要介紹了tensorflow轉(zhuǎn)onnx的實(shí)現(xiàn)方法,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2023-03-03
Python處理時(shí)間日期坐標(biāo)軸過程詳解
這篇文章主要介紹了Python處理時(shí)間日期坐標(biāo)軸過程詳解,當(dāng)日期數(shù)據(jù)作為圖表的坐標(biāo)軸時(shí)通常需要特殊處理,應(yīng)為日期字符串比較長(zhǎng),容易產(chǎn)生重疊現(xiàn)象,需要的朋友可以參考下2019-06-06
python爬蟲搭配起B(yǎng)ilibili唧唧的流程分析
這篇文章主要介紹了python爬蟲搭配起B(yǎng)ilibili唧唧的流程分析,本文通過圖文并茂的形式給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-12-12

