Python 用healpy快速求healpy映射和二维高斯映射的卷积

Python 用healpy快速求healpy映射和二维高斯映射的卷积,python,numpy,healpy,Python,Numpy,Healpy,我有一个nside=512的healpix映射(=巨大的numpy.ndarray,大约3.1E6个元素)。我需要用一个二维高斯函数把它卷积起来 我试着创建一个Gausian的healpix映射,将两个numpy.ndarray相乘,得到总和;这太慢了 我尝试的第二件事是定义一个高斯函数(不是一个映射),然后是一个2D函数,对于给定的x,y,它返回x,y位置的巨大的_-map*gausian值。然后我使用scipy.integrate.nquad来得到积分。比第一种方法快,但是 有没有办法用球谐

我有一个nside=512的healpix映射(=巨大的numpy.ndarray,大约3.1E6个元素)。我需要用一个二维高斯函数把它卷积起来

我试着创建一个Gausian的healpix映射,将两个numpy.ndarray相乘,得到总和;这太慢了

我尝试的第二件事是定义一个高斯函数(不是一个映射),然后是一个2D函数,对于给定的x,y,它返回x,y位置的巨大的_-map*gausian值。然后我使用scipy.integrate.nquad来得到积分。比第一种方法快,但是

有没有办法用球谐函数的展开式更快地得到巨大的高斯映射的积分?类似于在球形伤害中展开巨大的_图,在球形伤害中展开高斯图,乘以系数,变换回来,得到和

还有可能的修改,比如:a)使用巨大的_映射的对数和高斯函数的对数,然后对系数进行的运算显然是求和。b) 直接从系数中得到积分,而不需要反变换?c) 将扩展限制在某个数量,并加快整个过程


如何使用healpy正确实现它?

您可以尝试使用
healpy.smoothing
,例如:

wmap_map_I_smoothed = hp.smoothing(wmap_map_I, fwhm=60, arcmin=True)
hp.mollview(wmap_map_I_smoothed, min=-1, max=1, title='Map smoothed 1 deg')
文件:

看起来您的实现正在运行,即使速度很慢。你能用一个嵌入绘图的简单示例创建一个IPython笔记本,将其粘贴到github gist,并将链接粘贴到nbviewer.IPython.org上吗?在获得了一些healpy/healpix的经验后,我意识到这个答案指明了方向,即获得healpy地图和2D高斯曲线的卷积。