掩码数组的`fill_value`有什么实际影响(如果有的话)?

时间:2015-11-25 16:25:25

标签: python arrays numpy masked-array

当显示MaskedArray时,我告诉数据,掩码和填充值。当然,数据和掩码非常重要。但是填充值的实际意义是什么?我甚至可以change it,但为什么我要这样做 - 填充值不是一个实际细节而没有实际影响吗?

换句话说:fill_value是否会对未直接处理fill_value的任何代码产生影响?

1 个答案:

答案 0 :(得分:2)

查看Masked_Array类代码,我看到了:

  • 设置和获取fill_value

  • 的方法
  • filled()方法,返回一个副本,其中屏蔽的值由fill_value替换。这是“直接”使用它。

  • filled作为计算的一部分进行调用的方法。

masked.all()填充True,然后填充普通数组all

masked.any()填写False

masked.nonzero()

return narray(self.filled(0), copy=False).nonzero()

tracesum也填0,但prod填充1

argsort(以及argmin等其他方法)使用:

 d = self.filled(fill_value).view(ndarray)

这些方法采用fill_value参数,或使用self.fill_value。对于这样的方法,用户可能对如何在排序或采用最小值/最大值时使用屏蔽值具有强烈的偏好。

所以fill_value对于有效的数组计算至关重要。有些方法需要特殊值,其他方法可以使用用户想要的任何值。