2015-06-05 91 views
4

我想只迭代np.ma.ndarray中的未掩碼值。迭代numpy.ma數組,忽略掩碼值

下列要求:

import numpy as np 
a = np.ma.array([1, 2, 3], mask = [0, 1, 0]) 
for i in a: 
    print i 

我得到:

1 
-- 
3 

我想獲得如下:

1 
3 

好像np.nditer()可能是要走的路,但我沒有找到任何可能指定此項的flags。我該怎麼做?謝謝!

+2

甲屏蔽數組是真的2個陣列,基座之一,和掩模。通用的'numpy'代碼將會與基地一起工作;這將包括'nditer'。這只是可以使用面具的「ma」方法/功能。 – hpaulj

+0

這澄清了'nditer''arraymask'標誌對我的意圖。謝謝。 – ryanjdillon

+0

你可能可以將'ma''data'和''''分別傳遞給'nditer',使用這個標誌來標識後面的。但我還沒有探索過這個功能。 – hpaulj

回答

5

要使用a.compressed()

import numpy as np 
a = np.ma.array([1, 2, 3], mask = [0, 1, 0]) 
for i in a.compressed(): 
    print i 

其給出:

1 
3 
+1

有趣。剝離了一些細節,'a.compressed()'最終做了'a._data.compress(〜a._mask)' – hpaulj