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