2016-03-14 109 views
0

我想通过使用masked_where方法组合两个蒙版来创建一个numpy数组的掩码。如何在Numpy的遮罩数组上组合遮罩?

import numpy as np 
a = np.arange(10) 
#=> array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9]) 
a = (ma.masked_less(a,3)) && (ma.masked_greater_equal(a,8)) 

这会导致“无效语法”错误。相反,我期待的阵列如下:

array([-- -- -- 3 4 5 6 7 -- --]) 

这怎么办?

+0

@Mat与我的编辑,这个问题应该是堆栈溢出确定,所以让我们迁移它。而“无效语法”实际上是整个错误信息(好吧,从技术上讲,错误也指出了错误的位置)。 – amon

回答

4

Python按位和运算符是&而不是&&

import numpy as np 
a = np.arange(10) 
a = np.ma.masked_less(a, 3) & np.ma.masked_greater_equal(a, 8) 

将工作。

0

这我会找到更优雅比你ma.masked...

a = np.arange(10) 
#=> array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9]) 
print a[(a<8)*(a>=3)] 
#=> array([3 4 5 6 7]) 

在任何情况下,你的版本,你需要一个np.ma,而不是纯ma

...或者你真的想要的在array([-- -- -- 3 4 5 6 7 -- --])的差距要填写的东西,如None例如?

+0

IPython pylab会自动从numpy导入类似'ma'的东西。 –

+1

不,他在上面的一行中写了“import numpy as np',并使用了'np.arange()'。所以不,你错了。 你好,Ilja ^^ – Ilja

+0

错过了导入,所以是的。你好! –