正如我試圖瞭解Python中的廣播,我遇到了形狀不匹配的錯誤。我知道這意味着我的陣列不適合維度。我的代碼基本上試圖做的陣列以下操作尺寸如下:Numpy廣播陣列
(256,256,3)*(256,256)+(256,256)
我知道問題是乘法。我想知道是否有辦法解決這個問題?我可以爲乘法的(256,256)數組添加額外的維度嗎?
正如我試圖瞭解Python中的廣播,我遇到了形狀不匹配的錯誤。我知道這意味着我的陣列不適合維度。我的代碼基本上試圖做的陣列以下操作尺寸如下:Numpy廣播陣列
(256,256,3)*(256,256)+(256,256)
我知道問題是乘法。我想知道是否有辦法解決這個問題?我可以爲乘法的(256,256)數組添加額外的維度嗎?
比方說
A.shape = (256,256,3)
B.shape = (256,256)
C.shape = (256,256)
NumPy broadcasting增加對軸左默認,所以 將導致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
。這有點短,但意圖可能不太清楚。
非常感謝你! – user3303613
您可以使用'numpy.newaxis'添加新維度 –
請參閱文檔和示例:http://docs.scipy.org/doc/numpy/reference/arrays.indexing.html#numpy.newaxis –
您可以點擊答案分數下的勾號圖標接受答案。 – EdChum