2
如果值不在數組中,則np.ma.masked_equal
或masked_values
不會創建False的掩碼,而是標量。numpy masked_array mask更改類型
實施例:
y = np.arange(10)
yy = np.ma.masked_equal(y,0)
產生掩蔽陣列枝條掩模爲10個假值的陣列,而
y = np.arange(1,10)
yy = np.ma.masked_equal(y,0)
產生具有設置爲標量假掩模掩蔽陣列。其結果是,因爲在我的代碼,我不事先知道面具是否匹配數組中的任何條目,我不得不明確檢查:
yy=np.ma.masked_values(y,0)
if np.isscalar(yy.mask):
yy.mask=np.zeros(y.shape,dtype=bool)
這似乎是一個過勞給我。這種行爲的原因是什麼,有沒有辦法避免它?
非常感謝。我猜這是有道理的,而且我可能過於熱衷於使用masked_equal或masked_values,但我不確定我是否理解爲什麼numpy試圖最大限度地減少內存需求,而不是直接創建masked_array時使用上下文。 –