mplot3d 함수 plot_surface
은 서페이스를 정의하는 점의 좌표를 3 개의 2D 배열 인 X, Y, Z로 입력해야합니다. 다음은 이러한 배열의 구성을 보여주는 작업 예제입니다. I는 X가 Y는 Z의 각 U 의해 파라미터 구면 좌표로 좌표 표현 V.3D 플로팅 : 2D 배열로 좌표 인수를 입력하는 이유는 무엇입니까?
import numpy as np
import matplotlib.pyplot as plt
from mpl_toolkits.mplot3d import Axes3D
fig = plt.figure()
ax = fig.add_subplot(111, projection = '3d')
# generate the coordinates on the surface by parameterizing
u = np.linspace(0, 2 * np.pi, 100)
v = np.linspace(0, 2 * np.pi, 100)
x = np.outer(np.cos(u), np.sin(v))
y = np.outer(np.sin(u), np.sin(v))
z = np.outer(np.ones(np.size(u)), np.cos(v))
ax.plot_surface(x, y, z)
plt.show()
I은 X, Y, Z로 표시되는 좌표가 정확하게 [X[i,j], Y[i,j], Z[i,j]]
내가 위에 인덱싱 모든 트리플렛의 집합이라고 생각 및 j. (1) 이것이 맞습니까?
실제 음모를 구성하기 위해 필자가 작성한 많은 기능은 위의 삼중 항의 형식으로 세 쌍의 목록 인 인수를 취합니다. 즉 points = [[x1,y1,z1], [x2,y2,z2], ..., [xn, yn, zn]]
입니다. 나는이 입력이 plot_surface
에 의해 받아 들여지기를 기대했지만, 그렇지 않습니다. 결과적으로 저는 두 표현 사이를 상당히 빈번하게 변환해야한다고 생각합니다. via
points = zip(*[x.flatten() for x in (X,Y,Z)])
나는 그렇게 할 수 있지만 내 자신의 기능에도 2D 배열 형식을 사용해야한다고 걱정한다. (2) 배열 입력 형식이 이러한 배열의 구성을 프로그래밍하기 쉬운 이유가 있습니까? 예를 들어, 계산이 더 효율적입니까?