我想在数组中间屏蔽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)
最后一次工作我也不知道如何加入这两个结果。我推荐两个结果的面具
如果你能帮助我。
答案 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)