TypeError:使用 numpy 迭代 0-d 数组
Posted
技术标签:
【中文标题】TypeError:使用 numpy 迭代 0-d 数组【英文标题】:TypeError: iteration over a 0-d array, using numpy 【发布时间】:2014-02-07 12:47:58 【问题描述】:我正在使用此代码,直接来自 scikit-learn 页面。它创建了一个字典:
symbol_dict =
'TOT': 'Total',
'XOM': 'Exxon',
'CVX': 'Chevron',
symbols, names = np.array(symbol_dict.items()).T
但我得到一个错误:
TypeError: iteration over a 0-d array
这段代码直接来自示例代码,所以我不知道出了什么问题。
【问题讨论】:
你能发布完整的回溯吗? 您的代码在我尝试时运行良好。问题似乎来自你没有展示的东西。回溯将使调试变得更加容易。 你在使用 Python 3 吗?在 Python 3 上,items
返回一个 dict 视图,NumPy 不理解该视图。使用np.array(list(symbol_dict.items())).T
将视图转换为元组列表,NumPy 可以正确识别。
感谢 user2357112 解决了问题。
user2357112,这也为我修复了它。为什么不将此作为答案发布?
【参考方案1】:
正如 user2357112 所说,在 Python 3 中,dict.items()
返回一个字典视图对象,而不是键值对列表 (the difference is explained here)。将其包装在 list()
中会创建一个列表,NumPy 可以将其转换为数组:
np.array(list(symbol_dict.items()))
【讨论】:
以上是关于TypeError:使用 numpy 迭代 0-d 数组的主要内容,如果未能解决你的问题,请参考以下文章
Python:“numpy.amax”与 Python 的“max”:“int”对象不可迭代
TypeError: 不支持的操作数类型 -: 'numpy.ndarray' 和 'numpy.ndarray'
TypeError:不允许隐式转换为 NumPy 数组。请使用 `.get()` 显式构造 NumPy 数组。 -CuPy
如何解决 TypeError:'numpy.ndarray' 对象在 Python 上不可调用