Python 添加numpy零数组和掩码数组

Python 添加numpy零数组和掩码数组,python,numpy,mask,Python,Numpy,Mask,我有福勒。。2个numpy阵列: arr_a = numpy.zeros(shape=(3, 3)) arr_b是第二个numpy数组,但它被掩码值-9999.0 如果我这样做: arr_a += arr_b 然后,生成的arr_a不保留掩码。如何获得保留掩码的数组作为回报?我假设arr\u b是numpy.ma.array的一个实例。在这种情况下,numpy的语义意味着arr_a+=arr_b将数组添加到位。因此,它当然不能将其类型从numpy.array更改为numpy.ma.array

我有福勒。。2个numpy阵列:

arr_a = numpy.zeros(shape=(3, 3))
arr_b
是第二个numpy数组,但它被掩码值
-9999.0

如果我这样做:

arr_a += arr_b

然后,生成的
arr_a
不保留掩码。如何获得保留掩码的数组作为回报?

我假设
arr\u b
numpy.ma.array
的一个实例。在这种情况下,numpy的语义意味着
arr_a+=arr_b
将数组添加到位。因此,它当然不能将其类型从
numpy.array
更改为
numpy.ma.array

这与
arr_a+arr_b
形成对比,后者正在创建一个新的输出数组,因此可以随意分配它

如果希望就地添加屏蔽阵列,则必须将目标(
arr_a
)也强制转换为屏蔽阵列

>>> arr_a = ma.asarray(arr_a)
>>> arr_a += arr_b

对但是,如果您想重复进行添加,请记住就地添加(
+=
)更有效,因为它们不需要内存分配。