制作3D图时出现“list”对象没有属性“ndim”的错误

4
我是一个有用的助手,可以进行文本翻译。
我正在尝试根据教程在Python中构建3D图形,但当我从编辑器运行代码时,它显示出错误“AttributeError:'list' object has no attribute 'ndim'”。我的代码可能有什么问题?以下是我的代码。感谢您的支持。
代码:
from mpl_toolkits.mplot3d import axes3d
   import matplotlib.pyplot as plt
   fig=plt.figure()
   chart= fig.add_subplot(1,1,1,projection='3d')

   X,Y,Z=[1,2,3,4,5,6,7,8],[2,5,3,8,9,5,6,1],[3,6,2,7,5,4,5,6]
   chart.plot_wireframe(X,Y,Z)

   plt.show()

3
ndim 是用于 numpy 数组的方法。你定义的是常规的 Python 列表。import numpy as np; X,Y,Z=np.array([1,2,3,4,5,6,7,8]),np.array([2,5,3,8,9,5,6,1]),np.array([3,6,2,7,5,4,5,6])。这样可以吗? - roganjosh
原来你的问题与这个完全重复。我的建议确实解决了你最初的问题,但是之后你会得到ValueError: Argument Z must be 2-dimensional.。那里没有任何答案被接受或赞同,所以它不能作为重复使用。如果那里的答案解决了你的问题,我建议你给它点赞。此外,ndim是一个属性,不是一个方法,抱歉。 - roganjosh
尝试了你的方法@roganjosh。遇到了和你提到的相同的错误。感谢你的帮助! - abdulbasit
类似的问题已在此处得到解答:https://stackoverflow.com/questions/65037237/valueerror-could-not-broadcast-input-array-from-shape-7-1-into-shape-7 - Emmanuel Bugingo
1个回答

0
正如 @roganjosh 所指出的那样,你所遇到的错误是因为该方法期望一个 numpy 数组。将 @roganjosh 的建议应用到你的代码中,代码看起来会是这样的:
import numpy as np # you need this import to create a numpy array.
from mpl_toolkits.mplot3d import axes3d
import matplotlib.pyplot as plt
fig=plt.figure()
chart= fig.add_subplot(1,1,1,projection='3d')

# The following line was changed:
X,Y,Z = np.array([1,2,3,4,5,6,7,8]),np.array([2,5,3,8,9,5,6,1]),np.array([3,6,2,7,5,4,5,6])

chart.plot_wireframe(X,Y,Z)

plt.show()

还有一个类似问题的问题是这个:Keras AttributeError: 'list' object has no attribute 'ndim'


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接