1
我有FOLL .. 2个numpy的阵列:添加numpy的零阵列和屏蔽数组
arr_a = numpy.zeros(shape=(3, 3))
arr_b
是第二numpy的阵列,但它是掩蔽的-9999.0
掩模值,如果我做的:
arr_a += arr_b
然后由此产生的arr_a
不保留掩码。我怎样才能得到一个保留面具的数组呢?
我有FOLL .. 2个numpy的阵列:添加numpy的零阵列和屏蔽数组
arr_a = numpy.zeros(shape=(3, 3))
arr_b
是第二numpy的阵列,但它是掩蔽的-9999.0
掩模值,如果我做的:
arr_a += arr_b
然后由此产生的arr_a
不保留掩码。我怎样才能得到一个保留面具的数组呢?
我假设arr_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
所以arr_a = arr_a + arr_b应该可以正常工作吗? – user308827
是的......但是如果您想重复添加,请记住就地添加('+ =')效率更高,因为它们不需要内存分配。 – donkopotamus