将healpy mask应用于地图数组

时间:2015-01-20 20:02:10

标签: python arrays mask healpy

我有一系列带有两个不同索引的地图,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是一维的,那么这些都是有效的。

我可以想象一些应用这些地图的不同方法:

(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)用Python来枚举列表:

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)时我没有收到错误,但我也没有map_series_ma的元素都有掩码;实际上,它们甚至看起来都不是hp.ma对象。但奇怪的是:当我返回temp时, 有适当的掩码。

尝试(B2)后我得到了错误 AttributeError:'numpy.ndarray'对象没有属性'mask'(在查看我的语法之后,我完全明白了!)

我有点困惑如何解决这个问题。 (A)和(B1)似乎都可以接受......

非常感谢任何帮助, 谢谢, 萨姆

1 个答案:

答案 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