Python 当x和y表示为一维阵列时,如何使用matplotlib创建三维曲面打印?

Python 当x和y表示为一维阵列时,如何使用matplotlib创建三维曲面打印?,python,numpy,matplotlib,surface,Python,Numpy,Matplotlib,Surface,我想从阵列x,y,z创建一个三维曲面图,其中len(x)和len(z)=250,len(y)=7 产生以下错误: ValueError: shape mismatch: objects cannot be broadcast to a single shape 我试过网格: T,U=np.meshgrid(x,b) surf = ax.plot_surface(T,U,y, cmap=cm.coolwarm, linewidth=0, antialiase

我想从阵列x,y,z创建一个三维曲面图,其中len(x)和len(z)=250,len(y)=7

产生以下错误:

ValueError: shape mismatch: objects cannot be broadcast to a single shape
我试过网格:

T,U=np.meshgrid(x,b)
surf = ax.plot_surface(T,U,y, cmap=cm.coolwarm,
                   linewidth=0, antialiased=False)
但这产生了: ValueError(“参数Z必须是二维的。”)


如果方向正确,我们将不胜感激。谢谢

您需要扩展数据,使每个数据点都有x和y。 这是通过组合
x
y
以形成与
z
形状相同的数组来实现的

您可以使用以下方法执行此操作:


所有点都由其在三维空间中的x、y和z值表示。当点没有y值时,它是一条线而不是一个点。有没有可能,你想要完成的是复制丢失的y值?我想是的。当我打印数组的形状时:x=(250,),y=(12,)z=(250,12),但它们都应该是(250,12),以便生成绘图?我不知道该怎么做。谢谢你的帮助。
T,U=np.meshgrid(x,b)
surf = ax.plot_surface(T,U,y, cmap=cm.coolwarm,
                   linewidth=0, antialiased=False)
import numpy as np

x = np.array([1, 2, 3])
y = np.array([5, 6, 7, 8])
z = np.random.rand(4, 3) 

# make sure to take a look hat the keyword 
# indexing : {‘xy’, ‘ij’} and check some (x,y,z) pairs
# to make sure that the values are correct 

xv, yv = np.meshgrid(x, y)
print(xv)
print(yv)
print(xv.shape)
print(yv.shape)
print(z.shape)