2015-06-05 64 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