我在工作中一直使用蒙面數組,但我遇到的一個問題是蒙面數組的初始化有點笨重。具體來說,ma.zeros()和ma.empty()會返回帶有掩碼的掩碼數組,該掩碼與數組維度不匹配。我想這樣做的原因是,如果我不分配給我的數組的特定元素,它默認情況下會被屏蔽。Python numpy蒙面數組初始化
In [4]: A=ma.zeros((3,))
...
masked_array(data = [ 0. 0. 0.],
mask = False,
fill_value = 1e+20)
我可以隨後分配面膜:
In [6]: A.mask=ones((3,))
...
masked_array(data = [-- -- --],
mask = [ True True True],
fill_value = 1e+20)
但是爲什麼我應該用兩條線來初始化和數組?或者,我可以忽略ma.zeros()功能,並指定在同一行的面具和數據:
In [8]: A=ma.masked_array(zeros((3,)),mask=ones((3,)))
...
masked_array(data = [-- -- --],
mask = [ True True True],
fill_value = 1e+20)
但我想這也是笨重。我瀏覽了numpy.ma
文檔,但我找不到處理這個問題的簡單方法。我錯過了明顯的東西嗎?
嗨皮埃爾,謝謝你的回覆。在我的應用程序中,我總是需要一個掩碼,這樣如果我不最終分配給一個索引,它將默認被屏蔽(我編輯了我的問題以更好地反映這一點)。 你的「旁註」似乎給了我一直在尋找的東西! –