當前位置:
首頁 > 最新 > python庫之numpy(三)

python庫之numpy(三)

broadcasting是個很有用的機制,可以讓numpy中的數組工作在不同的shape上。通常會有兩個大小不一樣的數組,我們會想用小數組來表示作用在大數組上的乘積次數。

比如,如果想要在矩陣的每行加上一個常量向量,可以按如下方式:

上面的方式是ok的,但是當x很大的時候,循環計算在python中是特別低效的。下面給出更高效的方式。

numpy的broadcasting可以有不需要多維複製向量v的方式,以下是例子:

儘管x的維度是(4,3),v的維度是(3,),代碼y = x + v 是可以藉助broadcasting成功運行的。實質上,只有v的維度也是(4,3)才可以成功執行,其中v的每一行都是原來v的一個副本,然後這個求和就是基於元素的簡單矩陣求和。

broadcasting兩個數組需要遵循下面幾個原則:

如果上面的解釋有疑問,您可以查看下面文檔:

https://docs.scipy.org/doc/numpy/user/basics.broadcasting.html

支持broadcasting的函數稱之為universal函數,從下面文檔可以找到詳情:

https://docs.scipy.org/doc/numpy/reference/ufuncs.html#available-ufuncs

下圖是部分broadcasting的應用:

broadcasting可以讓你的代碼更加簡潔和高效,所以推薦掌握。


喜歡這篇文章嗎?立刻分享出去讓更多人知道吧!

本站內容充實豐富,博大精深,小編精選每日熱門資訊,隨時更新,點擊「搶先收到最新資訊」瀏覽吧!


請您繼續閱讀更多來自 全球大搜羅 的精彩文章:

TAG:全球大搜羅 |