Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/279.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 在healpy中绘制numpy数组_Python_Arrays_Numpy_Astronomy_Healpy - Fatal编程技术网

Python 在healpy中绘制numpy数组

Python 在healpy中绘制numpy数组,python,arrays,numpy,astronomy,healpy,Python,Arrays,Numpy,Astronomy,Healpy,我试图在healpix地图上生成一个光束,使用。首先,我希望能够在mollweide投影中生成2D高斯,但我真的不知道从哪里开始 我可以定义二维高斯分布: import numpy as np def gaussian_2D(x,y,mu_x=0.,mu_y=0.,sig_x=1.,sig_y=1.): return np.exp(-0.5*(((x-mu_x) / sig_x)**2 + ((y-mu_y) / sig_y)**2)) 这样我就可以建立一个3D X,Y,Z空间,如:

我试图在healpix地图上生成一个光束,使用。首先,我希望能够在mollweide投影中生成2D高斯,但我真的不知道从哪里开始

我可以定义二维高斯分布:

import numpy as np
def gaussian_2D(x,y,mu_x=0.,mu_y=0.,sig_x=1.,sig_y=1.):
    return np.exp(-0.5*(((x-mu_x) / sig_x)**2 + ((y-mu_y) / sig_y)**2))
这样我就可以建立一个3D X,Y,Z空间,如:

delta = 0.025
x = np.arange(-4, 4, delta)
y = np.arange(-4, 4, delta)
X, Y = np.meshgrid(x,y)
Z = gaussian_2D(X,Y)
但从这里开始,我就迷路了,无法找到多少关于如何和/或项目内容的有用文档。任何关于攻击方向的建议都将不胜感激

我是这样做的:

用小把戏。我在所需的高斯中心插入一个点,然后我使用“涂抹”创建一个带有一些sigma的高斯

以下是一些例子:

#!/usr/bin/env python
import numpy as np
import healpy as hp
import pylab as pl

NSIDE=512 #the map garannularity

m_sm=np.arange(hp.nside2npix(NSIDE)) # creates the map
m_sm=m_sm*0. # sets all values to zero

theta=np.radians(80.) # coordinates for the gaussian
phi=np.radians(20.)

indx=hp.pixelfunc.ang2pix(NSIDE,theta,phi) # getting the index of the point corresponding to the coordinates
m_sm[indx]=1. # setting that point value to 1.

gmap=hp.smoothing(m_sm, sigma=np.radians(20.),verbose=False,lmax=1024) # creating a new map, smmeared version of m_sm

hp.mollview(gmap, title="Gaussian Map") #draw it
pl.show()
现在如果你想用手来做,你可以用高斯函数

1) 你给它一些坐标

2) 使用以下命令检索与该坐标对应的索引:

indx=hp.pixelfunc.ang2pix(NSIDE,theta,phi)
3) 将该点的值设置为高斯函数的值。i、 e:

my_healpy_map[indx]=my_gauss(theta, phy, mean_theta, mean_phy, sigma_theta, sigma_phy)

healpy
使用HEALPix像素化,因此贴图是一维数组,其中索引对应于像素。如果只需要Mollweide投影,可以使用
matplotlib
,请参阅