2017-07-13 52 views
2

我有一些數組包含蒙面元素(來自Numpy.MaskedArray),例如,在numpy數組中刪除蒙面元素

data = [0,1,masked,3,masked,5,...] 

其中掩模不遵循規則模式。

我想通過數組進行迭代,簡單地刪除被屏蔽所有元素直到結束:

data = [0,1,3,5,...] 

我試着像一個循環:

for i in xrange(len(data)): 
    if np.ma.is_masked(data[i]): 
     data.pop(i) 

但我得到的錯誤:local variable 'data' referenced before assignment

我是否必須創建一個新數組並添加未被屏蔽的元素?還是有一個MaskedArray功能,可以自動做到這一點?我查看了文檔,但對我來說並不明顯。

謝謝!

+0

什麼是真正面具?你能提供一個[mcve]嗎? –

+0

您的錯誤與您的問題無關 – Eric

+0

[x for isinstance(x,(int))] – JejeBelfort

回答

4

隨着面具逐位反演~

data = data[~data.mask] 
+0

我得到的錯誤:'AttributeError:'list'object has no attribute 'mask'' –

+0

@RichardHall,但你寫道,你已經掩蓋numpy陣列 – RomanPerekhrest

+0

是的,我不知道爲什麼我得到那個錯誤。 –

6

data.compressed()是函數你要找的

+0

這不起作用,我得到'AttributeError:'列表'對象沒有屬性'壓縮'錯誤 –