我有两个数组(gt
和pred
),值的范围是0到4。
这两个数组的形状为(1, 1, 93, 349, 219)
。我的目标是创建一个忽略掩码并将其乘以gt和pred以忽略两个数组中的值。但是,我面临一个问题
ignore_value=4
if ignore_value is not None:
mask[gt!=ignore_value]=1 # ignore value mask
gt=mask*gt
pred=mask*pred # ignore value mask for pred
print "after removing ignore value: ", np.unique(gt),np.unique(pred)
output: after removing ignore value: [0 1 2 3] [0 1 2 3 4]
为什么不删除in中的忽略值pred
?
IMO,一种更好的解决方案是使用布尔索引并将单元格显式设置为0。
gt[gt == ignore_value] = 0
pred[pred == ignore_value] = 0
通常,不能保证gt
并且pred
将ignore_value
在相同的单元中具有,因此对它们两个都使用单个掩码是不合适的。
但是,上面的代码可以工作并且效率更高,因为它仅在数组的一小部分上操作,而不是对数组的所有部分进行操作(就像将它们相乘一样)。是输出
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句