2014-09-08 1 views
5

में 3 डी गाऊसी वितरण उत्पन्न करना मैं पायथन में गॉसियन वितरण उत्पन्न करना चाहता हूं जिसमें एक्स और वाई आयाम स्थिति को इंगित करते हैं और जेड आयाम एक निश्चित मात्रा की परिमाण को दर्शाता है।पायथन

वितरण का अधिकतम मूल्य 2e6 और मानक विचलन सिग्मा = 0.025 है।

MATLAB में मैं के साथ ऐसा कर सकते हैं:

x1 = linspace(-1,1,30); 
x2 = linspace(-1,1,30); 

mu = [0,0]; 
Sigma = [.025,.025]; 

[X1,X2] = meshgrid(x1,x2); 
F = mvnpdf([X1(:) X2(:)],mu,Sigma); 
F = 314159.153*reshape(F,length(x2),length(x1)); 
surf(x1,x2,F); 

अजगर में, क्या मैं अब तक है:

x = np.linspace(-1,1,30) 
y = np.linspace(-1,1,30) 

mu = (np.median(x),np.median(y)) 

sigma = (.025,.025) 

एक Numpy समारोह numpy.random.multivariate_normal क्या माना जाता है कि क्या कर सकते हैं नहीं है MATLAB के mvnpdf जैसा ही है, लेकिन मैं documentation को कम करने के लिए संघर्ष कर रहा हूं। विशेष रूप से numpy.random.multivariate_normal द्वारा आवश्यक covariance मैट्रिक्स प्राप्त करने में।

+0

मुझे लगता है कि आप गलत सोच रहे हैं कि ''() '', क्योंकि एक ही बात करता है numpy.random.multivariate_normal आपको वितरण का पीडीएफ नहीं देता है, यह सिर्फ कॉन्वर्सिस मैट्रिक्स में परिभाषित वितरण से यादृच्छिक संख्या खींचता है और साथ ही उम्मीद मानों mu। – Nras

+0

मैं देखता हूं कि आपका क्या मतलब है हाँ। इसके बाद इसे पूरा करने के बारे में कोई सुझाव? – Jonny

+0

मुझे लगता है कि आपका _xy_ वितरण _separable_ है, यानी, यह _x_ गॉसियन वितरण समय का उत्पाद _y_ Gaussian वितरण है। शायद वह पाइथन के साथ मदद कर सकता है –

उत्तर

2

scipy 0.14 के रूप में, आप scipy.stats.multivariate_normal.pdf() उपयोग कर सकते हैं:

http://docs.scipy.org/doc/scipy/reference/generated/scipy.stats.multivariate_normal.html

import numpy as np 
from scipy.stats import multivariate_normal 

x, y = np.mgrid[-1.0:1.0:30j, -1.0:1.0:30j] 
# Need an (N, 2) array of (x, y) pairs. 
xy = np.column_stack([x.flat, y.flat]) 

mu = np.array([0.0, 0.0]) 

sigma = np.array([.025, .025]) 
covariance = np.diag(sigma**2) 

z = multivariate_normal.pdf(xy, mean=mu, cov=covariance) 

# Reshape back to a (30, 30) grid. 
z = z.reshape(x.shape)