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