Посмотрите на функцию NumPy meshgrid
. Для двух векторов x
и y
он создает двумерные координатные массивы, которые затем можно использовать в векторизованных вычислениях.
Чтобы ответить на ваш вопрос: да, фактически, ваши фактические x
иy
(также) должны быть 30 x 30
массивами, но, как указано выше, meshgrid
правильно сгенерирует их для вас, используя ваши начальные векторы длины 30
.
Это было бы моим (сокращенный) код:
import numpy as np
import matplotlib.pyplot as plt
from mpl_toolkits.mplot3d import Axes3D
N = 30
x = np.linspace(1, 30, N)
y = np.linspace(1, 30, N)
xx, yy = np.meshgrid(x, y)
z = (xx + yy + 1) / 3
fig = plt.figure()
ax = fig.add_subplot(111, projection='3d')
ax.scatter3D(xx, yy, z, label="Mean")
ax.set_title("Scatter Plot of Mean")
ax.set_xlabel('x')
ax.set_ylabel('y')
ax.set_zlabel('z')
ax.legend()
plt.show()
Вывод:
![Output](https://i.stack.imgur.com/50acK.png)
Надеюсь, что поможет!