我在工作中一直使用屏蔽数组,但我遇到的一个问题是屏蔽数组的初始化有点笨拙。具体来说, ma.zeros() 和 ma.empty() 返回带有与数组维度不匹配的掩码的掩码数组。我想要这个的原因是,如果我不分配给我的数组的特定元素,默认情况下它会被屏蔽。
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
文档,但我找不到处理这个问题的简洁方法。我错过了什么明显的东西吗?