如何在python中生成二元高斯pdf?

如何在python中生成二元高斯pdf?,python,bayesian,probability-distribution,Python,Bayesian,Probability Distribution,我正在尝试实现一个用于绘制二元高斯pdf轮廓的代码。当我明确说明向量/协方差/向量积时,即考虑协方差的所有元素、平均值和数据作为标量,只需使用numpy.meshgrid并调用plt.contour中的函数即可。但当我尝试将其推广并将向量(2-D数组)和实际矩阵(2x2数组)实现到函数中时,它根本不起作用 x = np.linspace(0,8,50) y = np.linspace(-1,5,50) mu = np.zeros(2) mu[0], mu[1] = 4., 2. t=

我正在尝试实现一个用于绘制二元高斯pdf轮廓的代码。当我明确说明向量/协方差/向量积时,即考虑协方差的所有元素、平均值和数据作为标量,只需使用numpy.meshgrid并调用plt.contour中的函数即可。但当我尝试将其推广并将向量(2-D数组)和实际矩阵(2x2数组)实现到函数中时,它根本不起作用

 x = np.linspace(0,8,50)
 y = np.linspace(-1,5,50)

 mu = np.zeros(2)
 mu[0], mu[1] = 4., 2.
 t=(2,2)
 s=np.zeros(t)
 s[0][0]=1.44
 s[0][1], s[1][0] = -0.702, -0.702
 s[1][1]=0.81


 def bivariate(x,mu,s):
      y=x-mu
      dets = np.linalg.det(s)   #determinant of s
      n = 2                     #dimension
      
      Exp=np.exp(-(1/2)*(np.dot(y,np.dot(s,y))))
      norm = (1./(((2*np.pi)**(n/2)))*np.sqrt(dets))
      z=(norm*Exp)
      return z

 def contour(x,y):
      X, Y = np.meshgrid(x,y)
      v=np.stack((X,Y),axis=-1)
      Z=bivariate(v,mu,s)
      plt.contour(X,Y,Z)
      plt.plot(4,2, color='green')
      plt.show()
我使用numpy.stack()将变量x,y转换为向量,并将其输入为二元变量。它告诉我形状(2,2)和(50,50,2)没有对齐,这很明显,因为s=2x2矩阵和y由初始x-y网格给出。我怎样才能使事情顺利进行?即使我以指数形式明确计算乘积,它也应该是50x50矩阵中的x和y网格