我有一个函数,它接受一个2D向量并返回该点的pdf(标量)。
作为示例,myPDF( np.array[4,4] )
在< 4,4>处返回单个pdf值。此函数不能获取向量列表,它只接受一个2D向量作为参数。
现在我想用plot_surface绘制这个pdf,如下所示: 这就是我尝试过的事情
x = np.arange(-10,10)
y = np.arange(-10,10)
z = [ myPDF( np.array([xx,yy])) for xx in x for yy in y]
xy = [ [xx, yy] for xx in x for yy in y]
在这里,我被困住了。我必须以某种形式重塑z和xy以将它们与plot_surface一起使用,但我现在不知道如何这样做。我也尝试过meshgrid,但不知道如何将不同形状的数据转换为plot_surface的合法形式。
x, y = np.mgrid[-5:5,-5:5]
如果我使用如上所述的mgrid,它会给我10x10矩阵。然后,我必须使用我的函数在10x10矩阵中生成相应的z值,但是找不到分解x和y的方法,生成z值并以适当的形式重新格式化z值。
这里的主要问题是我对操作数据知之甚少,因此无法找到完成此任务的好方法。因此,我想学习一种使用我的pdf函数为plot_surface生成数据集的正确方法。
使用我的pdf函数生成数据点的好方法是什么?感谢您帮助这个新人!
答案 0 :(得分:1)
xy = np.stack(np.mgrid[-5:5,-5:5], axis=-1) # xy[0,0] = x, y
z = np.apply_along_axis(myPDF, axis=-1, arr=xy) # z[0,0] = myPDF(xy[0,0])