簡體   English   中英

Numpy廣播數組

[英]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廣播默認情況下在左側添加軸,因此將導致BC廣播到

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.newaxisNone 它稍短一些,但目的可能不太清楚。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM