在NumPy数组中将特定值设置为0

时间:2018-12-23 08:54:28

标签: python arrays python-2.7 numpy

我有两个数组(uint64_tgt),其值范围从0到4。

这两个数组的形状为pred。我的目标是创建一个忽略掩码并将其乘以gt和pred以忽略两个数组中的值。但是,我遇到了一个问题

(1, 1, 93, 349, 219)

为什么不删除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] 中的忽略值?

1 个答案:

答案 0 :(得分:1)

IMO,一个更好的解决方案是使用布尔索引并将单元格显式设置为0。

gt[gt == ignore_value] = 0
pred[pred == ignore_value] = 0

通常,不能保证gtpred在同一单元格中有ignore_value,因此对它们两个都使用单个掩码是不合适的。

但是,上面的代码可以工作并且效率更高,因为它仅对数组的一小部分进行操作,而不是对数组的全部进行操作(就像将它们相乘一样)。是输出