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

What practical impact (if any) does the `fill_value` of a masked array have?

显示MaskedArray时,我被告知数据、遮罩和填充值。当然,data和mask很重要。但是填充值的实际意义是什么?我什至可以 change it,但我为什么要这样做 — 填充值不只是一个没有实际影响的实现细节吗?

换句话说:fill_value 对任何不直接寻址 fill_value 的代码有影响吗?

查看 Masked_Array class 代码,我看到:

  • 设置和获取方法fill_value

  • filled() 方法,其中 returns 一个用 fill_value 替换掩码值的副本。这是'direct'的用法

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

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

masked.any() 填充为 False.

masked.nonzero() 是:

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

tracesum也填0,但prod1.

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

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

这些方法采用 fill_value 参数,或使用 self.fill_value。对于这样的方法,用户可能对如何使用屏蔽值进行排序或采用 minimum/maximum.

有强烈的偏好

所以fill_value对于高效的数组计算是必不可少的。有些方法需要一个特殊的值,其他的可以使用任何用户想要的。