2015-11-04 155 views
1

我有FOLL .. 2个numpy的阵列:添加numpy的零阵列和屏蔽数组

arr_a = numpy.zeros(shape=(3, 3)) 

arr_b是第二numpy的阵列,但它是掩蔽的-9999.0

掩模值,如果我做的:

arr_a += arr_b 

然后由此产生的arr_a不保留掩码。我怎样才能得到一个保留面具的数组呢?

回答

3

我假设arr_bnumpy.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 
+0

所以arr_a = arr_a + arr_b应该可以正常工作吗? – user308827

+0

是的......但是如果您想重复添加,请记住就地添加('+ =')效率更高,因为它们不需要内存分配。 – donkopotamus