Python Numpy广播阵列

Python Numpy广播阵列,python,arrays,numpy,Python,Arrays,Numpy,当我试图理解python中的广播时,我遇到了一个形状不匹配错误。我知道这意味着我的数组在维度上不适合。我的代码基本上尝试对具有以下维度的数组执行以下操作: (256256,3)*(256256)+(256256) 我知道问题在于乘法运算。我想知道有没有办法解决这个问题?我能给乘法的(256256)数组增加一个额外的维数吗?比方说 A.shape = (256,256,3) B.shape = (256,256) C.shape = (256,256) 默认情况下,在左侧添加轴,以便 这将导致B

当我试图理解python中的广播时,我遇到了一个形状不匹配错误。我知道这意味着我的数组在维度上不适合。我的代码基本上尝试对具有以下维度的数组执行以下操作:

(256256,3)*(256256)+(256256)

我知道问题在于乘法运算。我想知道有没有办法解决这个问题?我能给乘法的(256256)数组增加一个额外的维数吗?

比方说

A.shape = (256,256,3)
B.shape = (256,256)
C.shape = (256,256)
默认情况下,在左侧添加轴,以便 这将导致
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]
具有形状
(256256,1)
,当与
A
相乘时,该形状被广播到
(256256,3)
,对于
C[…,np.newaxis]



B[…,np.newaxis]
也可以写成
B[…,None]
——因为
np.newaxis
None
。它稍微短了一点,但意图可能不太清楚。

您可以使用
numpy.newaxis
添加新维度请在此处查看文档和示例:您可以通过单击答案分数下的勾号图标来接受答案。