gpt4 book ai didi

python - 使用 meshgrid 将 X、Y、Z 三元组转换为三个二维数组,用于 matplotlib 中的曲面图

转载 作者:太空宇宙 更新时间:2023-11-04 05:40:25 25 4
gpt4 key购买 nike

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

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

我意识到我需要使用 meshgrid 函数将三个一维列表转换为三个二维列表。

这是我目前所拥有的:

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)

运行它会出现以下错误(对于我在上面输入的最后一行):

 total size of new array must be unchanged

我深入研究了 stackoverflow,并尝试使用有类似问题的人的建议。以下是我从每条建议中得到的错误:

将最后一行更改为:

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).

将其更改为:

Z = znew.reshape(X.shape, len(znew))

给出错误:

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()

关于python - 使用 meshgrid 将 X、Y、Z 三元组转换为三个二维数组,用于 matplotlib 中的曲面图,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34126136/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com