如何解决TypeError:输入z必须为2D,而不是3D
我有以下代码:
x = np.arange(0,4)
y = np.arange(6,10)
X,Y = np.meshgrid(x,y)
print(a.shape,x.shape,y.shape)
plt.contour([X,Y,],a)
plt.show()
给出以下输出:
(4,4) (4,) (4,)
TypeError: Input z must be 2D,not 3D
很显然,数组a
是二维的,就像在打印形状时得到的(4,4)
一样。查看文档,它还给出了contour([X,] Z,[levels],**kwargs)
的语法,我相信我已经遵循了([X,]
之后的逗号除外,但是当我删除它时,出现了语法错误,所以我我以为是错字,但我可能错了。设置级别/删除级别没有区别。
我在做什么错了?
解决方法
考虑到数组的形状,问题不在于您期望的a
的形状,而是因为您不应该将X
和Y
放在其中调用plt.contour
时的列表。
我想你应该写:
plt.contour(X,Y,a)
请注意,函数签名contour([X,] Z,[levels],**kwargs)
表示X
和Y
(以及levels
)是可选参数(不是在以下情况下应将它们放在列表中)调用函数)。
因此,例如这样调用plt.contour
也是有效的:
plt.contour(a)
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。