2014-02-20 2 views
2

У меня есть массивиндекс маскируется элемент массива

z = np.random.random((10,10)) --> two dimensions 

с маской

y,x=np.mgrid[slice(0,61, 1),slice(0,106, 1)] 

sorted = np.sort(z,axis=None) 
mask = ma.masked_inside(z,sorted[10],sorted[-10]) 

маска Массив замаскирован внутри только 10 мин и 10 элемента внутри макс с маской TRUE. Мне нужен индекс позиция положить х, у в аннотировать, но только хотел создать элемент, который маскируется

Я хотел возвратные элементы маски замаскированных и положение индекса по оси всех элементов, чтобы создать автоматические помечает объекты

ax.annotate(str(j)+" Altura",xy=(i,j)) 

ответ

3

Чтобы вернуть «позицию индекса», используйте np.where на маске. Например:

import numpy as np 
A = np.array([[2,7,9],[9,1,4],[8,7,2]]) 
idx = A<3 # The mask 

print np.where(idx) 
print zip(*np.where(idx)) 

Дает:

(array([0, 1, 2]), array([0, 1, 2])) 
[(0, 0), (1, 1), (2, 2)] 

то есть места, где A<3. Я нахожу zipping над элементами и упаковываю их как список кортежей полезными, но использую первое представление, чтобы индексировать их обратно из исходного массива.

+0

спасибо. И если у меня есть массив, замаскированный в этот момент. это мой последний массив в маске _f_data = np.ma.masked_array (np.around (z, decimals = 4, out = None), ~ _c) – virtualsets

+0

@virtualsets Я не уверен, что понимаю, что вы просите в этом комментарии , – Hooked

+0

Я не понимаю вашу маску, моя маска ~ c и является соединением двух других масок. У меня есть одна маска ~ c и один массив z – virtualsets

Смежные вопросы