我想平滑一张不覆盖整个天空的地图。该映射不是高斯映射,也不是零,因此healpy
它用 0 填充缺失值的默认行为导致该掩码边缘偏向较低值:
import healpy as hp
nside = 128
npix = hp.nside2npix(nside)
arr = np.ones(npix)
mask = np.zeros(npix, dtype=bool)
mask[:mask.size//2] = True
arr[~mask] = hp.UNSEEN
arr_sm = hp.smoothing(arr, fwhm=np.radians(5.))
hp.mollview(arr, title='Input array')
hp.mollview(arr_sm, title='Smoothed array')
我想通过将掩码值的权重设置为零来保持锐利边缘,而不是将值设置为零。这似乎很困难,因为healpy
在谐波空间中执行平滑。
更具体地说,我想模仿mode
关键字 in scipy.gaussian_filter()
。healpy.smoothing()
隐式使用mode=constant
with cval=0
,但我需要类似mode=reflect
.
有什么合理的方法可以克服这个问题吗?