2014-02-20 62 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)