2014-10-29 1 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

글쎄, 내 목적을 위해 단순히 multivariate_norm 배포를 대신 사용하여 해결 방법을 얻었습니다. 나는 SciPi에서 다변량 배포판이 너무 저개발적이라는 사실에 놀랐습니다! –

관련 문제