在我的工作中,我经常使用掩码数组,但是我遇到的一个问题是初始化掩码数组有点繁琐。具体而言,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
文档,但我找不到一个简洁的方法来处理这个问题。我有没有错过什么明显的东西?