КАК исправить «Аргумент Z должен быть 2-мерным»

#python #numpy #matplotlib

#python #numpy #matplotlib

Вопрос:

Я хочу нарисовать 3D-ГРАФИК своей работы, но ошибка показывает, что аргумент Z должен быть 2-мерным

 from mpl_toolkits.mplot3d import Axes3D
figure = plt.figure()
ax = Axes3D(figure)
X = np.arange(0,1,0.01)
Y = np.arange(0,1,0.01)
X,Y = np.meshgrid(X,Y)
M=[]
for i in X:
 for j in Y:
  NEW_smoothed=holt(Airline_passengers,alpha=i,beta=j)
  M.append(sse(new_smoothed[:-2],Airline_passengers.values[2:]))
B=np.array(X)
N=np.array(Y)
Z=np.array(M)
ax.plot_surface(B,N,Z,rstride=1,cstride=1,cmap='rainbow')
plt.show()
  

Я ожидал 3D-графика

Комментарии:

1. Проверьте тип и форму X и Y после meshgrid . Я не думаю, что вам нужен дополнительный B N шаг и . Какова форма Z ? Соответствует ли это X ? Чего plot_surface ожидать?

2. M — это список, и я хочу иметь непрерывную графику, чтобы показать взаимосвязь между Xy и Z.Я думаю, ошибка в том, что я не показываю взаимосвязь между xy и z в этом списке

3. X аналогично (100,100) массив Y . Z должно быть таким же. Простой случай был бы Z = X Y . Это должен быть массив (100,100) с одним значением для каждой точки сетки, определенной X Y сеткой и . Я не могу повторить ваш M расчет, но я подозреваю, что он имеет len(M) 10000. Z=np.array(M).reshape(X.shape) может сработать.