我已经几次读过蒙面数组文件,到处搜索,感觉彻底愚蠢。我无法弄清楚如何在一个阵列中应用一个掩模到另一个阵列。如何将一个数组中的掩码应用到另一个数组?
例子:
import numpy as np
y = np.array([2,1,5,2]) # y axis
x = np.array([1,2,3,4]) # x axis
m = np.ma.masked_where(y>2, y) # filter out values larger than 5
print m
[2 1 -- 2]
print np.ma.compressed(m)
[2 1 2]
所以这工作得很好....但绘制该Y轴,我需要一个匹配x轴。如何将y数组中的遮罩应用于x数组?像这样的东西会是有意义的,但产生的垃圾:
new_x = x[m.mask].copy()
new_x
array([5])
那么,如何在地球上是有(注意新的x阵列需要一个新的数组)。
编辑:
嗯,看来要做到这一点的一种方式是这样的:
>>> import numpy as np
>>> x = np.array([1,2,3,4])
>>> y = np.array([2,1,5,2])
>>> m = np.ma.masked_where(y>2, y)
>>> new_x = np.ma.masked_array(x, m.mask)
>>> print np.ma.compressed(new_x)
[1 2 4]
但是,这是令人难以置信的凌乱!我试图找到一个解决办法优雅的IDL ...
难道你不就像'plot(x,m)'而不是做一个new_x吗? – joris 2013-05-11 08:40:16
它是'new_x = x [〜m.mask] .copy()'。请注意'〜',因为掩码为True的值被屏蔽。 – joris 2013-05-11 08:41:58
不,我不能将这个注入到绘图命令中,因为数据需要事先进行处理,所以我真的需要在多个轴上访问选定的数据。 – Balthasar 2013-05-11 08:50:39