2015-01-20 3 views
0

두 개의 다른 인덱스 인 i와 j가있는 일련의지도가 있습니다. map_series [i] [j]와 같은 색인을 생성하십시오.지도의 배열에 헬름 마스크를 적용합니다.

편집 1/21 : 최소한의 작업 예를 들어 내가 각각 같은 마스크를 적용 할 map_series=np.array([np.array([np.arange(12) + 0.1*(i+1) + 0.01*(j+1) for j in range(3)]) for i in range(5)])

같은 것; map_series이 1 차원이면이 각각이 작동합니다.

나는이지도를 적용하는 몇 가지 방법을 상상할 수

:

전체 배열에 마스크를 적용 (A) :

map_series_ma = hp.ma(map_series) 
map_series_ma.mask = predefined_mask 

(B1) 배열의 각 요소에 마스크 적용 :

map_series_ma = np.zeros_like(map_series) 
for i in range(len(map_series)): 
    for j in range(len(map_series[0])): 
     temp = hp.ma(map_series[i][j]) 
     temp.mask = predefined_mask 
     map_series_ma[i][j] = temp 

(B2) 상기 어레이의 각 요소에 마스크를 적용 :

map_series_ma = np.zeros_like(map_series) 
for i in range(len(map_series)): 
    for j in range(len(map_series[0])): 
     map_series_ma[i][j] = hp.ma(map_series[i][j]) 
     map_series_ma[i][j].mask = predefined_mask 

(C) Pythonically 목록을 열거 :

map_series_ma = np.array([hp.ma(map_series[i][j]) for j in range(j_max) for i in range(i_max)]) 
map_series_ma.mask = predetermined_mask 

이 모든 그러나, 내 원하는 출력을 제공하지 못한다.

(A) 또는 (C)를 시도하면 첫 번째 단계 후 오류가 발생하여 TypeError : 잘못된 픽셀 수를 표시합니다.

시도 할 때 (B1) 오류가 발생하지 않지만 maps_series_ma의 요소에도 마스크가 없습니다. 실제로, 그들은 심지어 hp.ma 객체로 보이지 않습니다. 이상하게도 충분히 : 그래도 내가 temp를 반환하면 에 적절한 마스크를 가지고 있습니다. 'numpy.ndarray'개체가 어떤 속성 '마스크'가 없습니다

나는 야 (내 구문보고 후, 나는 완전히 이해!) : 나는 오류 AttributeError를 얻을 수 (B2) 시도시

약간은 이것에 대해 어떻게 가는지 혼란스러워했습니다. (A)와 (B1)이 나에게 허용되는 것 모두 ...

이 어떤 도움이 많이 감사합니다

, 덕분에 샘

+0

당신은 장난감을 제공 할 수 있습니다 예를 들자면? –

답변

0

이 나를 위해 작동합니다

import numpy as np 
import healpy as hp 

map_series=np.array([np.array([np.arange(12) + 0.1*(i+1) + 0.01*(j+1) for j in range(3)]) for i in range(5)]) 
map_series_ma = map(lambda x: hp.ma(x), map_series) 
pm=[True, True,True,True,True,True,False,False,False,False,False,False] 
for m in map_series_ma: 
    for mm in m: 
     mm.mask=pm 
+0

답변을 다시 보내 주셔서 감사합니다! – user1451632