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 上不可调用

Python - 重复数据删除问题:TypeError:不可散列的类型:'numpy.ndarray'

python numpy错误“TypeError:'numpy.float64'对象不能解释为整数”