索引numpy数组的最后一个维度

时间:2015-01-26 14:01:52

标签: python numpy

我有两个名为image和mask的图像,形状如下:

image shape: (876, 1020, 3)
mask shape: (876, 1020)

我要做的是将图像的三个元素中的每一个与掩模非零的掩码分开。所以,我这样做:

import numpy as np

index = np.nonzero(mask)
image[index, :] = image[index, :]/mask[index]

然而,这会导致程序花费很长时间,然后失败;

ValueError:操作数无法与形状一起广播(2,302793,1020,3)(302793,)

1 个答案:

答案 0 :(得分:4)

如果您在创建掩码副本时没有内存问题,可以将零元素设置为1并直接划分:

mask2 = mask.copy()
mask2[mask2==0]=1
image /= mask2[...,np.newaxis]