扩展3D阵列

时间:2019-02-04 14:07:50

标签: python numpy mask masking

我有一个形状为200、130、131(x,y,z)的3D阵列。基本上是遮罩文件。可以说它叫做“ maskCoords”。我想将此扩展为我的原始数据形状512 * 512 * 485(x,y,z)。但是保持掩码不变,并将其余索引填充为零。

因此,我创建了一个空的3D数组,例如:

 mask3d = np.zeros_like(MainData3d)

但是现在我不明白如何用保存在我的被屏蔽文件中的值填充这个mask3d数组。我试图做喜欢

mask3d[maskCoords]=1

但是这不起作用。当我重叠Maindata3d和mask3d时,遮罩的区域不可见。 任何帮助或想法,将不胜感激。

1 个答案:

答案 0 :(得分:1)

我假设您的maskCoords是3d数组中包含我答案的3d坐标,因为就像您的问题中的注释一样,很难准确地说明您的意思。

这是方法。

mask3d = np.zeros((512, 512, 485))

# Create random coordinates
maskCoords = (np.random.random((200, 130, 131)) * 400).astype('int')

# Convert the coordinates to be converted by numpy.ravel_multi_index
maskCoords2 = np.hstack((maskCoords[:, :, 0].flatten()[:, None], maskCoords[:, :, 1].flatten()[:, None], maskCoords[:, :, 2].flatten()[:, None])).T

# Convert the coordinates into indices so we can access the locations in the original array
inds = np.ravel_multi_index(maskCoords2, [512, 512, 485])

# Set the array values at the locations of the indices to 1
mask3d.flat[inds] = 1

也许不是您要找的东西,但是我还是在尝试一些东西。