Python 不同形状Ndaray上的numpy数组的数学运算
我有一个numpy数组,其形状(12,)如下所示: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个值。 我想用第一个数组划分每个像素,例如,如果第一个像素是: >>>[
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