【发布时间】:2014-05-01 10:53:40
【问题描述】:
在 NumPy 中,是否有一种 easy 方法来广播两个维度数组,例如(x,y) 和 (x,y,z)? NumPy 广播通常匹配最后一个维度的维度,因此通常的广播将不起作用(它需要第一个数组具有维度 (y,z))。
背景:我正在处理图像,其中一些是 RGB(形状 (h,w,3)),其中一些是灰度(形状 (h,w))。我生成形状为(h,w) 的alpha 蒙版,我想通过mask * im 将蒙版应用于图像。由于上述问题,这不起作用,所以我最终不得不做例如
mask = mask.reshape(mask.shape + (1,) * (len(im.shape) - len(mask.shape)))
这是丑陋的。代码的其他部分对向量和矩阵进行操作,这也遇到了同样的问题:尝试执行m + v 失败,其中m 的形状为(x,y),v 的形状为(x,)。可以使用例如atleast_3d,但是我必须记住我真正想要的维度。
【问题讨论】: