掩盖中间numpy数组中的10个值

时间:2014-02-20 11:39:56

标签: python arrays numpy

我想在数组中间屏蔽10个值,并混合10个最大值和10个最小值。

创建数组

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

排序

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

逻辑前提10最多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) 

最后一次工作我也不知道如何加入这两个结果。我推荐两个结果的面具

如果你能帮助我。

1 个答案:

答案 0 :(得分:1)

好的我打算解决方案,我认为很重,任何人都可以找到一个更好的

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)

我修复的问题,结合了两个掩码,但你需要先反转,因为我用OR操作重新发布。

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

和结果

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