2016-09-26 8 views
0

하나의 2D 벡터를 취하여 그 포인트의 pdf (스칼라)를 반환하는 함수가 있습니다.(x, y)를 3D 플롯으로 플롯하는 기능

그림과 같이 myPDF(np.array[4,4])은 < 4,4>에 하나의 pdf 값을 반환합니다. 이 함수는 벡터 목록을 취할 수 없으며 하나의 2D 벡터 만 인수로 허용합니다.

는 지금은 아래와 같이 plot_surface를 사용하여이 PDF 파일을 플롯하려면 : enter image description here 이 내가

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 기능을 사용하여 데이터 플롯에 대한 데이터 포인트를 생성하는 좋은 방법은 무엇입니까? 이 newB를 도와 주셔서 감사합니다!

+1

* "나는 등등 arange에, meshgrid 및 시도했지만 적절한 데이터 포인트를 만들 수있는 방법을 찾을 수 없습니다"* - 이러한 방법으로 문제가 무엇 이었는가를? 코드를 보여주세요. –

+0

@ali_m 방금 시도한 것을 추가했습니다. 당신의 도움을 주셔서 감사합니다! – noclew

답변

1

사용 apply_along_axis

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]) 
+0

와우 고마워 !!!!!! – noclew

+0

그런데 축이 -1 인 이유는 무엇입니까? – noclew

+0

여기서 중요한 것은 아니지만'axis = -'는'x or y '를 마지막 축으로 만들어'(xij, yij) == (xy [i, j, 0], xy [i, j, 1]) == xy [i, j]'. 다른 축을 선택할 수도 있지만 1과 0은 마지막 축이 아닙니다. – Eric

관련 문제