我已經幾次讀過蒙面數組文件,到處搜索,感覺徹底愚蠢。我無法弄清楚如何在一個陣列中應用一個掩模到另一個陣列。如何將一個數組中的掩碼應用到另一個數組?
例子:
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