Mathplotlib轮廓错误:输入z必须是二维数组

2024-09-24 06:35:05 发布

您现在位置:Python中文网/ 问答频道 /正文

我已经试过使用网格网格,但它不起作用,我真的找不到问题。。。E=np.零(2500)是一个数组,所以我找不到错误。。。 提前谢谢

import numpy as np
import numpy.random as rd
import matplotlib.pyplot as plt
from mpl_toolkits.mplot3d import Axes3D
from mkgrid2d import *

W1 = np.linspace(-1.0,3.0,num = 50)
W0 = np.linspace(-2.0,4.0,num = 50)

w11 = 1.00
w00=1.0

w = np.array([[w11],[w00]],dtype=float)

mew = 0
sigma = np.sqrt(2)


Npts=50;rd.seed(1)
x1=rd.rand(1,Npts)*10.-5.0 #Npts uniformemente distribuídos
r = np.random.normal(mew, sigma, 50)*2.-1.0#ruído gaussiano distribuído

X = np.vstack((x1,np.ones((1,x1.shape[1]))))
X = X.astype('float') #converter para float

N=Npts 

y = np.dot(w.T,X) + r
E= np.zeros(2500) 

“E”表示轮廓的Z

^{pr2}$

Tags: fromimportnumpy网格asnprandomrd
1条回答
网友
1楼 · 发布于 2024-09-24 06:35:05

如错误消息所示,您需要您的E数组是2D,属于(50,50),而不是形状(2500)的一维数组。在

有几种方法可以解决这个问题:

  1. {cd1>在你的

    E = E.reshape(len(W1),len(W0))
    
  2. 首先用正确的形状创建E,然后使用您的i和{}对其进行索引

    E = np.zeros((len(W1),len(W0)))
    
    for i in range (len(W1)):
        for j in range (len (W0)):
            w1 = np.array([W1[i],W0[j]])
            yn = np.dot(w1.T,X)
            E[i][j] = (1./50)*(np.sum((y-yn)**2))
    

相关问题 更多 >