Imshow和meshgrid并不像我想象的那样工作。我为2D中的给定(x,y)点定义了一些函数,该函数返回标量f(x,y)。我想用imshow可视化函数f。
x = np.linspace(0,4)
y = np.linspace(0,1)
X,Y = np.meshgrid(x,y)
Z = np.zeros((50,50))
for i in range(50):
for j in range(50):
Z[i,j] = f(X[i,j],Y[i,j])
fig = plt.figure()
plt.imshow(Z,extent=[0,4,1,0])
plt.show()
字符串
这和预期的一样,除了我认为它应该是[0,4,0,1]...我是否对每个(x,y)对定义了Z[i,j]不正确?解释一下这是如何工作的将是伟大的!谢谢你,谢谢
1条答案
按热度按时间46scxncf1#
据我所知,
imshow
通常用于显示图像。然后使用该范围来定义其大小,例如,您可能希望给予一个图像作为打印的背景。相反,我认为您会发现使用
pcolor
(此处为演示)更直观。它的工作原理与imshow
大致相同,因此您只需提供Z
即可。但是,您也可以将X
和Y
数组给予它。通过这种方式,您可以真正检查是否正确提供了值:字符串
我已经添加了一个函数来显示它的工作。请注意,如果您的函数能够处理numpy数组,则可以将
Z
的初始化和嵌套的for循环替换为型
这样更干净,计算速度也更快。