我有一张healpix地图,其中nside = 512(=巨大的numpy.ndarray,约3.1E6元素)。我需要用2D高斯卷积它。
我尝试创建一个高斯的healpix地图,将两个numpy.ndarray相乘并得到总和;这太慢了。
我试过的第二件事是定义一个高斯函数(不是一个映射),然后是一个2D函数,对于给定的x,y,它返回位置x,y处的huge_map * gausian的值。然后我使用scipy.integrate.nquad来获得积分。比第一种方法更快,但是......有没有办法如何使用扩展到球面谐波来获得huge_map * Gaussian的积分更快?有点像在球形伤害中扩展huge_map,在球形伤害中扩展高斯,将系数相乘,变换回来,得到总和。
可能的修改如:a)使用huge_map的日志和高斯的日志来工作,然后对系数的操作显然是总和。 b)直接从系数得到积分,没有后向变换? c)将扩展限制在一定数量并加快整个过程?
如何使用healpy正确实现它?
答案 0 :(得分:1)
您可以尝试使用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')
文档: http://healpy.readthedocs.org/en/latest/generated/healpy.sphtfunc.smoothing.html