2014-02-20 22 views
0

我会喜欢在数组中间掩盖10个值并混合10个最大值和10个值。在中间numpy数组中掩盖10个值

创建阵列

z = np.random.random((10,10)) 

排序

sorted = np.sort(z,axis=None) 

逻辑前提10 max和10分钟

p=np.logical_and(z >= sorted[10], z <= sorted[-10]) 

执行前提

c = ma.masked_where(p, z, copy=True) 

去中心

pos_1=len(sorted)/2-5 
pos_2=len(sorted)/2+5 

逻辑前提10个中间值:

p=np.logical_or(z < float(sorted[pos_1]) , z > float(sorted[pos_2])) 

执行前提

c = ma.masked_where(p, z, copy=True) 

最后就是WORKING此外,我不知道如何可以加入TWO结果。我参考了两个结果的面具

如果你能帮助我。

+0

整理其内置的功能,你不应该把它作为一个名称。 – wwii

回答

1

OK我FINT的解决方案,我认为这是沉重和任何人能找到一个更好的

z = np.random.random((10,10)) 
p=np.logical_and(z >= sorted[10], z <= sorted[-10]) 
a = ma.masked_where(p, z, copy=True) 
p=np.logical_or(z < float(sorted[pos_1]) , z > float(sorted[pos_2])) 
b = ma.masked_where(p, z, copy=True) 

我解决这个问题,将二者结合起来面具,但你必须先反转,因为我有一个realease OR操作。

c =np.ma.mask_or(~a.mask, ~b.mask) 

,并导致

print np.ma.masked_array(z,~c)