2
如果值不在数组中,则np.ma.masked_equal
或masked_values
不会创建False的掩码,而是标量。numpy masked_array mask更改类型
实施例:
y = np.arange(10)
yy = np.ma.masked_equal(y,0)
产生掩蔽阵列枝条掩模为10个假值的阵列,而
y = np.arange(1,10)
yy = np.ma.masked_equal(y,0)
产生具有设置为标量假掩模掩蔽阵列。其结果是,因为在我的代码,我不事先知道面具是否匹配数组中的任何条目,我不得不明确检查:
yy=np.ma.masked_values(y,0)
if np.isscalar(yy.mask):
yy.mask=np.zeros(y.shape,dtype=bool)
这似乎是一个过劳给我。这种行为的原因是什么,有没有办法避免它?
非常感谢。我猜这是有道理的,而且我可能过于热衷于使用masked_equal或masked_values,但我不确定我是否理解为什么numpy试图最大限度地减少内存需求,而不是直接创建masked_array时使用上下文。 –