2015-01-20 53 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