繁体   English   中英

屏蔽数组

[英]Masking an array

我正在尝试屏蔽 python 中的一个数组(称为数据集):该数组具有以下大小(5032、48、48)。 基本上这些是 5032 48x48 图像。 但是有些图像可能不包含任何数据,因此那里可能只有 0。 这些是我想要掩盖的。

我尝试了以下操作:(dataset[:] == 0).all(axis=0)。 当我打印上述操作的形状时,我得到 (5032, 48) 这不是我想要的。 我预计 (5032, )。

我不确定我做错了什么。 我想创建一个大小为 (5032, ) 的掩码,它具有 True(如果 48x48 数组中至少有一个非零值)和 False(如果 48x48 数组中只有零值)值。

谢谢你的帮助

有点古怪的方式,但只是对最后两个轴求和并检查总和是否为零。

nonzero_images = images[np.where(np.sum(images, axis = (1, 2)) == 0)]

你可以尝试类似的东西

# sample data - 3 nonzeros and 2 zeros
dataset = np.concatenate([np.ones((3, 48, 48)), np.zeros((2, 48, 48))])
new = dataset[np.unique(np.where(dataset.all(axis=1))[0])]

print(f'Dataset Shape: {dataset.shape}\nNew Shape: {new.shape}')
# Dataset Shape: (5, 48, 48)
# New Shape: (3, 48, 48)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM