2014-10-29 17 views
1

我試圖通過子類rv_continuous生成2D均勻分佈。SciPy - '對象太深的期望數組'當子類rv_continuous

from scipy import stats 
class uniform_2d(stats.rv_continuous): 
    def _pdf(self, x, y): 
     X, Y = np.meshgrid(x,y) 
     result = 1/(max(x)*max(y)) * np.ones_like(X) 
     return result 

x = y = np.linspace(1,3,3) 
uni = uniform_2d(name="uni") 
pdf = uni.pdf(x,y) 

fig = plt.figure(figsize=(9,5)) 
ax = fig.add_subplot(111) 
ax.pcolor(X,Y,pdf) 

試圖返回我的結果時,給下面的錯誤它失敗:

ValueError: object too deep for desired array

發生了什麼事?我的結果已經形成(3,3),並有numpy.ndarray - 爲什麼我不能簡單地返回一個numpy.ndarray

編輯:另外,我是這樣做的錯誤方式嗎?使用scipy.stats有沒有更簡單的方法來製作2D均勻分佈?

回答

3

rv_continuous僅適用於單變量分佈。您可以查看scipy/stats/_multivariate.py瞭解我們如何製作多變量分佈對象。目前,沒有公共的基類,只是一個預期的接口。

+0

好吧,就我的目的而言,我通過簡單地使用多變量分佈分佈來獲得解決方法。 SciPi中多元分佈是如此不發達的,我有點驚訝! – 2014-10-30 16:47:38

相關問題