当显示 aMaskedArray时,我被告知数据、掩码和填充值。当然,数据和掩码非常重要。但是填充值有什么实际意义呢?我什至可以更改它,但我为什么要这样做——填充值不只是一个没有实际影响的实现细节吗?
换句话说:对fill_value不直接寻址的任何代码有任何影响fill_value吗?
当显示 aMaskedArray时,我被告知数据、掩码和填充值。当然,数据和掩码非常重要。但是填充值有什么实际意义呢?我什至可以更改它,但我为什么要这样做——填充值不只是一个没有实际影响的实现细节吗?
换句话说:对fill_value不直接寻址的任何代码有任何影响fill_value吗?
查看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()
trace也sum填充 0,但prod填充1.
argsort(和其他方法,如argmin)使用:
d = self.filled(fill_value).view(ndarray)
这些方法接受一个fill_value参数,或使用self.fill_value. 对于这样的方法,用户可能对如何使用掩码值进行排序或取最小值/最大值有强烈的偏好。
因此fill_value对于高效的数组计算至关重要。有些方法需要一个特殊的值,有些方法可以使用用户想要的任何值。