Python中如何为(5032,48,48)数组生成(5032,)的全0图像掩码?
解决数组掩码问题
你的问题出在axis参数的选择上:
- 原代码
(dataset[:] == 0).all(axis=0)是沿着第一个维度(样本数量维度,即5032这个轴)做判断,相当于检查所有样本在同一个像素位置上是否全为0,所以结果形状不符合预期。
要生成形状为(5032,)的掩码,你需要针对每个样本的48x48图像维度做判断:
方法1:先判断全0再取反
# 先得到每个样本是否全为0的布尔数组(True=全0) all_zero = (dataset == 0).all(axis=(1, 2)) # 取反得到目标掩码:True=至少有一个非零值,False=全0 mask = ~all_zero
方法2:直接判断是否存在非零值
# 直接检查每个样本是否有至少一个非零值,结果就是目标掩码 mask = (dataset != 0).any(axis=(1, 2))
两种方法效果完全一致,都能得到你需要的(5032,)形状的掩码数组。
内容的提问来源于stack exchange,提问作者user21045076
相关产品推荐
相关产品推荐

