Python 使用meshgrid将X、Y、Z三元组转换为matplotlib中曲面打印的三个二维阵列

Python 使用meshgrid将X、Y、Z三元组转换为matplotlib中曲面打印的三个二维阵列,python,matplotlib,surface,mplot3d,Python,Matplotlib,Surface,Mplot3d,我是Python新手,所以请耐心等待。谢谢你的帮助 我拥有的:三个1D列表(xr,yr,zr),一个包含x值,另外两个y值和z值 我想做什么:在matplotlib中创建三维等高线图 我意识到我需要使用meshgrid函数将三个1D列表转换为三个2D列表 以下是我目前掌握的情况: xr = np.asarray(xr) yr = np.asarray(yr) zr = np.asarray(zr) X, Y = np.meshgrid(xr,yr) znew = np.array([zr f

我是Python新手,所以请耐心等待。谢谢你的帮助

我拥有的:三个1D列表(xr,yr,zr),一个包含x值,另外两个y值和z值
我想做什么:在matplotlib中创建三维等高线图

我意识到我需要使用meshgrid函数将三个1D列表转换为三个2D列表

以下是我目前掌握的情况:

xr = np.asarray(xr) 
yr = np.asarray(yr)
zr = np.asarray(zr)

X, Y = np.meshgrid(xr,yr)
znew = np.array([zr for x,y in zip(np.ravel(X), np.ravel(Y))])
Z = znew.reshape(X.shape)
运行此命令会导致以下错误(对于上面输入的最后一行):

我在stackoverflow周围挖掘,并尝试使用有类似问题的人的建议。以下是我从这些建议中得到的错误:

将最后一行更改为:

Z = znew.reshape(X.shape[0])
Z = znew.reshape(X.shape[0], len(znew))
给出了相同的错误

将最后一行更改为:

Z = znew.reshape(X.shape[0])
Z = znew.reshape(X.shape[0], len(znew))
给出了错误:

Shape of x does not match that of z: found (294, 294) instead of (294, 86436).
an integer is required
将其更改为:

Z = znew.reshape(X.shape, len(znew))
给出了错误:

Shape of x does not match that of z: found (294, 294) instead of (294, 86436).
an integer is required

有什么想法吗?

好吧,下面的示例代码适合我

import numpy as np
import matplotlib.pyplot as plt

xr = np.linspace(-20, 20, 100)
yr = np.linspace(-25, 25, 110)
X, Y = np.meshgrid(xr, yr)

#Z = 4*X**2 + Y**2

zr = []
for i in range(0, 110):
    y = -25.0 + (50./110.)*float(i)
    for k in range(0, 100):
        x = -20.0 + (40./100.)*float(k)

        v = 4.0*x*x + y*y

        zr.append(v)

Z = np.reshape(zr, X.shape)

print(X.shape)
print(Y.shape)
print(Z.shape)

plt.contour(X, Y, Z)
plt.show()

有合适的尺寸吗?基本上,您必须将
nx
作为
xr
的长度,
ny
作为
yr
的长度,以及
nx*ny
作为
zr
的长度。基本上,请看