索引 numpy 数组的最后一个维度
indexing the last dimension of numpy array
我有两个图像,分别称为 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并直接除以:
mask2 = mask.copy()
mask2[mask2==0]=1
image /= mask2[...,np.newaxis]
我有两个图像,分别称为 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并直接除以:
mask2 = mask.copy()
mask2[mask2==0]=1
image /= mask2[...,np.newaxis]