我已经阅读了几次遮罩的数组文档,在各处搜索并且感到非常愚蠢。我一生都无法弄清楚如何将一个面罩从一个阵列应用到另一个阵列。
例子:
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一样优雅的解决方案...
宝慕林4294392
相关分类