2015-01-20 55 views
0

我有一系列具有兩個不同索引i和j的地圖。讓這個索引像map_series [i] [j]。將healpy mask應用於地圖陣列

編輯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是一維的,這些工作。

我可以想象將這些圖的幾種不同的方式:

(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對象。奇怪的是,雖然:當我返回溫度它確實有適當的面具。

在試圖(B2),我得到的錯誤 AttributeError的:「numpy.ndarray」對象有沒有屬性「面具」

我是個(其中,看着我的語法後,我完全理解!)有點困惑如何去做這件事。兩者(A)和(B1)似乎可以接受,我...

任何幫助非常感謝,謝謝 , 山姆

+0

你可以提供一個玩具例如玩? – 2015-01-21 01:34:09

回答

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 2015-03-10 12:31:50