Python 不同形状Ndaray上的numpy数组的数学运算

Python 不同形状Ndaray上的numpy数组的数学运算,python,arrays,numpy,image-processing,numpy-ndarray,Python,Arrays,Numpy,Image Processing,Numpy Ndarray,我有一个numpy数组,其形状(12,)如下所示: array([0.111,0.222,0.333,0.444,0.555,0.666,0.777,0.888,0.999,0.100,0.011,0.12], dtype=float32) little_array/image 此外,我还有另一个具有12维形状的阵列(7731231): ndarray是一个具有12个波段的图像,因此wach像素包含12个值。 我想用第一个数组划分每个像素,例如,如果第一个像素是: >>>[

我有一个numpy数组,其形状(12,)如下所示:

array([0.111,0.222,0.333,0.444,0.555,0.666,0.777,0.888,0.999,0.100,0.011,0.12], dtype=float32)
little_array/image
此外,我还有另一个具有12维形状的阵列(7731231):

ndarray是一个具有12个波段的图像,因此wach像素包含12个值。 我想用第一个数组划分每个像素,例如,如果第一个像素是:

>>>[0.721 , 0.124, 0.154 , 0.452  ,0.975 , 0.013 , 0.875 , 0.324 , 0.543 , 0.213 , 0.675 , 0.212 ]
我希望结果将是此的结果计算:

>>>[0.721/0.111 , 0.124/0.222, 0.154/0.333, 0.452/0.444  ,0.975/0.555 , 0.013/0.666 , 0.875/0.777 , 0.324/0.888 , 0.543/0.999 , 0.2130.10 , 0.675/0.011 , 0.212/0.12 ]
因此,结果输出应该基本上是分割该行中的所有图像

我尝试过这样做:

array([0.111,0.222,0.333,0.444,0.555,0.666,0.777,0.888,0.999,0.100,0.011,0.12], dtype=float32)
little_array/image
但是我得到了错误

ValueError:操作数无法与形状一起广播 (127731231)(12,)


我的最终目标是:将每个维度除以短数组中的正确数字。

您应该能够像这样广播除法:

divisors = np.array(...) # 12 elements
image = np.array(...) # shape (12,773,1231) image
image / divisors[:, np.newaxis, np.newaxis]

Numpy广播的工作方式是,股息和除数的内部维度必须匹配,或等于1。可以通过变换数组来交换尺寸。见下文:

image = np.random.randn(12, 773, 1231)
x = np.random.randn(12)
image.shape  # (12L, 773L, 1231L)
image.T.shape  # (1231L, 773L, 12L)
x.shape  # (12L,)
image / x  # raises a ValueError
image.T / x  # works