[英]Numpy Broadcasting arrays
當我試圖了解python中的廣播時,遇到了形狀不匹配錯誤。 我知道這意味着我在尺寸方面不適合使用數組。 我的代碼基本上嘗試對具有以下維的數組執行以下操作:
(256,256,3)*(256256)+(256256)
我知道問題出在乘法中。 我想知道是否有任何方法可以解決此問題? 我可以在乘法的(256,256)數組中添加額外的維數嗎?
比方說
A.shape = (256,256,3)
B.shape = (256,256)
C.shape = (256,256)
NumPy廣播默認情況下在左側添加軸,因此將導致B
和C
廣播到
B.shape = (256,256,256)
C.shape = (256,256,256)
顯然這是行不通的,也不是您想要的,因為與A的形狀不匹配。
因此,當您想在右側添加軸時,請使用B[..., np.newaxis]
和C[..., np.newaxis]
:
A*B[..., np.newaxis] + C[..., np.newaxis]
B[..., np.newaxis]
形狀為(256,256,1)
,當與A
相乘時會廣播為(256,256,3)
, C[..., np.newaxis]
。
B[..., np.newaxis]
也可以寫為B[..., None]
-因為np.newaxis
是None
。 它稍短一些,但目的可能不太清楚。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.