numpy數組廣播的機制
numpy數組的廣播功能強大,但是也同時讓人疑惑不解,現在讓我們來談談其中的原理。
廣播原則:
如果兩個數組的后緣維度(即:從末尾開始算起的維度)的軸長相符或其中一方的長度為1,則認為它們是廣播兼容的,廣播會在缺失和(或)長度為1的軸上進行.
上面的原則很重要,是廣播的指導思想,下面我們來看看例子。
1.其實在最簡單的數組與標量數字之間的運算就存在廣播,只是我們把它看作理所當然了。

2.再看下一個例子,這個大家都會一致認為這是廣播了

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

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

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

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

arr減去他在1軸上的平均值,會出錯?看看為啥。
因為arr.mean(1)產生的shape為(4,),根據廣播原則,較小的數組的后緣維度必須為1,
所以需要將arr.mean變成(4,1),你所期望的結果如下:

參考:《利用Python進行數據分析》
以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。
相關文章
python爬蟲搭配起B(yǎng)ilibili唧唧的流程分析
這篇文章主要介紹了python爬蟲搭配起B(yǎng)ilibili唧唧的流程分析,本文通過圖文并茂的形式給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下2020-12-12

