2015-11-04 156 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