1

我有一张银河坐标地图,我需要将它保存在另一个文件的赤道坐标中。我知道我可以使用:

import healpy as hp
map=hp.read_map('file.fits')
map_rot=hp.mollview(map, coord=['G','C'], return_projected_map=True)

这应该返回一个numpy存储在map_rot. 但是当我阅读时map_rot,我发现它是一个仅填充了-inf值的 masked_array 和mask=False, fill_value=-1.6735e+30 (因此,显然-inf不是掩码)。此外,元素的总数与我期望的地图( )map_rot的像素数不匹配。npix=12*nside**2例如,如果nside=256我希望获得npix=786432, whilemap_rot400*800=320000元素。这是怎么回事?

(我已经看过这篇文章,但是我有一个极化地图,所以我需要旋转斯托克斯的参数。既然mollview知道怎么做,我试图直接从获取新地图mollview。)

4

1 回答 1

0

解决此问题的一种方法是保存输出,例如使用 pickle

import healpy as hp, pickle
map=hp.read_map('file.fits')
map_rot=hp.mollview(map, coord=['G','C'], return_projected_map=True)
pickle.dump(map_rot, open( "/path/map.p", "wb"))

hp.mollview() 的返回值具有可以使用标准 imshow() 函数显示的格式。所以下次你想绘制它时,只需执行以下操作

map_rot = pickle.load(open("/path/map.p"), 'rb'))
plt.imshow(map_rot)

map_rot 描述了整个 matplotlib 窗口中的像素,包括椭圆体周围的白色区域(-inf 颜色编码为白色)。

相反, mollview() 只接受位于椭圆体中的像素数组,即长度数组。

 len(hp.pixelfunc.nside2npix(NSIDE))
于 2016-04-01T14:55:55.847 回答