Python 健康面具有边界

Python 健康面具有边界,python,healpy,Python,Healpy,我试图为没有数据的像素遮罩我的healpy贴图,但是当我使用badval=-1.6375e+30应用healpy遮罩时,遮罩周围似乎有一个边框 import healpy as hp import numpy as np # load the mask mask = hp.read_map('mask_nvss_S20-S1000_Ns64.fits') # degrade the mask to NSIDE = 16 mask16 = np.round(hp.ud_grade(mask,

我试图为没有数据的像素遮罩我的healpy贴图,但是当我使用
badval=-1.6375e+30
应用healpy遮罩时,遮罩周围似乎有一个边框

import healpy as hp
import numpy as np

# load the mask
mask = hp.read_map('mask_nvss_S20-S1000_Ns64.fits')

# degrade the mask to NSIDE = 16
mask16 = np.round(hp.ud_grade(mask, 16))

# apply it to the map
masked_map = hp.ma(map1)
masked_map.mask = np.logical_not(mask16)

# masked map
nvss_map = np.round(masked_map)
有人能帮我消除这个边界效应吗


我仍然不清楚问题的全貌,但我认为您的问题与面罩降级有关

从高分辨率布尔掩码转换为低分辨率时,有三种不同的策略可供遵循。选择取决于你的问题

我将用您提供的遮罩演示效果,显示放大:

使用bool类型降级面具 您可以简单地将布尔掩码降级,得到下图中的左侧面板。请注意,在此过程中,小补丁将显示为未屏蔽

map_lowres_bool = hp.ud_grade(mask_highres.astype(bool), nside=16)
使用浮动类型降级遮罩 如果您改为降级类型为
float
,您将得到一个带权重的连续贴图(下面的中间面板)。我想这会产生你所看到的效果

map_lowres_float = hp.ud_grade(mask_highres.astype(float), nside=16)
使用bool类型正确降级面具 还可以降级布尔遮罩,使所有遮罩区域保持遮罩状态。由于分辨率较低,蒙版面片将比原始蒙版中的面片大

mask_lowres_proper = hp.ud_grade(mask.astype(float), nside=16).astype(float)
mask_lowres_proper = np.where(mask_lowres_proper == 1., True, False).astype(bool)
这将生成下面的右面板

希望这对你有帮助,如果你有问题,请告诉我


你能编辑问题以包含你正在使用的代码吗?
#加载掩码
mask=hp.read\u map('mask\nvss\u S20-S1000-Ns64.fits')#.astype(np.bool)```#将掩码降级为NSIDE=16掩码16=np round(hp.ud grade(mask,16))#将其应用于映射
masked_map.mask=np.logical_not(mask16)
masked map
nvss_map=np.round(masked_map)
你能把数据上传到什么地方吗?我有一个想法,但是没有原始数据无法检查。这里有一个数据链接,是nside=16的地图,我们需要nside=64的地图来重现分析。