3

当显示 aMaskedArray时,我被告知数据、掩码和填充值。当然,数据和掩码非常重要。但是填充值有什么实际意义呢?我什至可以更改它,但我为什么要这样做——填充值不只是一个没有实际影响的实现细节吗?

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

4

1 回答 1

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对于高效的数组计算至关重要。有些方法需要一个特殊的值,有些方法可以使用用户想要的任何值。

于 2015-11-25T17:45:45.353 回答