【python】numpy的廣播機制

如果兩個數組的後緣維度的軸長度相同或其中一方的軸長度爲 1,則認爲它們是廣播兼容的。廣播會在缺失維度和軸長度爲 1 的維度上進行。

後緣維度的軸長度: A.shape[-1] 即矩陣維度元組中的最後一個位置的值。
在這裏插入圖片描述
在這裏插入圖片描述
如上,矩陣 A 3,4 後緣維度的軸長度是 4,而矩陣 cal 1,4 的後緣維度也是 4,則他們滿足後緣維度軸長度相符,可以進行廣播。
廣播會在軸長度爲 1 的維度進行,軸長度爲 1 的維度對應 axis=0 ,即垂直方向,矩陣 cal 1,4 沿 axis=0 (垂直方向)複製成爲 cal_temp 3,4 ,之後兩者進行逐元素除法運算。
在這裏插入圖片描述

在這裏插入圖片描述
注意第3種情況,(3,1)和(1,3)也可以相加:

在這裏插入圖片描述
Python 的特性允許你使用廣播(broadcasting)功能,這是 Python 的 numpy 程序語言庫中最靈活的地方。這是程序語言的優點,也是缺點。優點的原因在於它們創造出語言的表達性,Python 語言巨大的靈活性使得你僅僅通過一行代碼就能做很多事情。但是這也是缺點,由於廣播巨大的靈活性,有時候你對於廣播的特點以及廣播的工作原理這些細節不熟悉的話,你可能會產生很細微或者看起來很奇怪的 bug。
例如,將一個列向量添加到一個行向量中,你會以爲它報出維度不匹配或類型錯誤之類的錯誤,但是實際上會得到一個行向量和列向量的求和。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章