我在工作中一直使用蒙面数组,但我遇到的一个问题是蒙面数组的初始化有点笨重。具体来说,ma.zeros()和ma.empty()会返回带有掩码的掩码数组,该掩码与数组维度不匹配。我想这样做的原因是,如果我不分配给我的数组的特定元素,它默认情况下会被屏蔽。Python numpy蒙面数组初始化
In [4]: A=ma.zeros((3,))
...
masked_array(data = [ 0. 0. 0.],
mask = False,
fill_value = 1e+20)
我可以随后分配面膜:
In [6]: A.mask=ones((3,))
...
masked_array(data = [-- -- --],
mask = [ True True True],
fill_value = 1e+20)
但是为什么我应该用两条线来初始化和数组?或者,我可以忽略ma.zeros()功能,并指定在同一行的面具和数据:
In [8]: A=ma.masked_array(zeros((3,)),mask=ones((3,)))
...
masked_array(data = [-- -- --],
mask = [ True True True],
fill_value = 1e+20)
但我想这也是笨重。我浏览了numpy.ma
文档,但我找不到处理这个问题的简单方法。我错过了明显的东西吗?
嗨皮埃尔,谢谢你的回复。在我的应用程序中,我总是需要一个掩码,这样如果我不最终分配给一个索引,它将默认被屏蔽(我编辑了我的问题以更好地反映这一点)。 你的“旁注”似乎给了我一直在寻找的东西! –