2014-02-20 3 views
0

Мне понравится маска 10 значений в середине массива и смешать с 10 значениями max и 10 минут.Маска 10 значений в средней матрице numpy

Создание массива

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

отсортированных

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

логическая предпосылка 10 макс и 10 мин

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

Execute помещение

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])) 

Execute предпосылке

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

ПОСЛЕДНИЙ РАБОТАЕТ ТАКЖЕ я не знаю, как можно объединить эти две РЕЗУЛЬТАТЫ. Я ОТМЕТЬ МАСКУ ДВА РЕЗУЛЬТАТОВ

Если бы вы могли мне помочь.

+0

отсортирован свою встроенную функцию а, вы не должны использовать его в качестве имени. – wwii

ответ

1

OK Я финт решение, я думаю, что это тяжелый и любой человек мог бы найти один лучше

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) 

Проблема, которую я могу исправить, объединить две маски, но вам нужно перевернуть первую, потому что я-релиз с ИЛИ.

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

и результат

print np.ma.masked_array(z,~c) 
Смежные вопросы