屏蔽数组的 `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()
trace
和sum
也填0,但prod
填1
.
argsort
(以及 argmin
等其他方法)使用:
d = self.filled(fill_value).view(ndarray)
这些方法采用 fill_value
参数,或使用 self.fill_value
。对于这样的方法,用户可能对如何使用屏蔽值进行排序或采用 minimum/maximum.
有强烈的偏好
所以fill_value
对于高效的数组计算是必不可少的。有些方法需要一个特殊的值,其他的可以使用任何用户想要的。
显示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()
trace
和sum
也填0,但prod
填1
.
argsort
(以及 argmin
等其他方法)使用:
d = self.filled(fill_value).view(ndarray)
这些方法采用 fill_value
参数,或使用 self.fill_value
。对于这样的方法,用户可能对如何使用屏蔽值进行排序或采用 minimum/maximum.
所以fill_value
对于高效的数组计算是必不可少的。有些方法需要一个特殊的值,其他的可以使用任何用户想要的。