【问题标题】:TypeError: iteration over a 0-d array, using numpyTypeError:使用 numpy 迭代 0-d 数组
【发布时间】: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,这也为我修复了它。为什么不将此作为答案发布?

标签: python-3.x numpy scikit-learn


【解决方案1】:

正如 user2357112 所说,在 Python 3 中,dict.items() 返回一个字典视图对象,而不是键值对列表 (the difference is explained here)。将其包装在 list() 中会创建一个列表,NumPy 可以将其转换为数组:

np.array(list(symbol_dict.items()))

【讨论】:

    猜你喜欢
    • 2018-07-16
    • 1970-01-01
    • 2016-08-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-01-11
    • 2014-01-15
    相关资源
    最近更新 更多