TypeError: Input z must be 2D, not 3D
TypeError: Input z must be 2D, not 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, Y,] Z, [levels], **kwargs)
的语法,我相信我已经遵循了([X,Y,]
之后的逗号除外,但是当我删除它时,我得到了一个语法错误,所以我'我假设这是一个错字,但我可能是错的)。将关卡 in/taking 排除在外没有任何区别。
我做错了什么?
考虑到数组的形状,问题不在于您预期的 a
的形状,而是您不应该放置 X
和 Y
在调用 plt.contour
时出现在列表中。
我想你应该写:
plt.contour(X, Y, a)
请注意,函数签名 contour([X, Y,] Z, [levels], **kwargs)
意味着 X
和 Y
(以及 levels
)是可选参数(并不是说它们应该放在调用函数时列出)。
所以它也是有效的,例如,像这样调用 plt.contour
:
plt.contour(a)
我有以下代码:
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, Y,] Z, [levels], **kwargs)
的语法,我相信我已经遵循了([X,Y,]
之后的逗号除外,但是当我删除它时,我得到了一个语法错误,所以我'我假设这是一个错字,但我可能是错的)。将关卡 in/taking 排除在外没有任何区别。
我做错了什么?
考虑到数组的形状,问题不在于您预期的 a
的形状,而是您不应该放置 X
和 Y
在调用 plt.contour
时出现在列表中。
我想你应该写:
plt.contour(X, Y, a)
请注意,函数签名 contour([X, Y,] Z, [levels], **kwargs)
意味着 X
和 Y
(以及 levels
)是可选参数(并不是说它们应该放在调用函数时列出)。
所以它也是有效的,例如,像这样调用 plt.contour
:
plt.contour(a)