【问题标题】:Switching from Python 2.7 to 3.7 error: "TypeError: 'generator' object is not subscriptable"从 Python 2.7 切换到 3.7 错误:“TypeError: 'generator' object is not subscriptable”
【发布时间】:2020-01-08 16:07:36
【问题描述】:

我正在升级我的 Python 环境,而这段用于在 Python 版本 2.7 和 3.6 中运行的代码现在显示以下错误消息:

TypeError:“生成器”对象不可下标

正是在这条指令上: np.array(dataset['data'])

其中 dataset 是一个包含加载的 arff 文件的变量...

试图挖掘我不明白这是关于迭代器的事情......但是我尝试过的示例无法修复......欢迎任何帮助!

dataset = arff.load(open('datasets/temporal_extract_14_3_2.first_1_hours.arff',  'r'))
data = np.array(dataset['data'])
df = pd.DataFrame(data)
df.head()

【问题讨论】:

  • 根据this answer,很可能你在Python 3中安装了错误的库。
  • 嗨拉斐尔,我用过liac-arff

标签: python pandas numpy scikit-learn


【解决方案1】:

摆脱打开文件处理程序。

dataset = arff.load('datasets/temporal_extract_14_3_2.first_1_hours.arff')

【讨论】:

  • 如果要使用liac-arff,那么可能需要调用open
  • 我确实调用了 open 函数...加载时不会出现错误消息...它发生在“np.array(dataset['data'])”中,这很奇怪,因为它在 Python 2.7 和 3.6 版本中运行良好....
  • 对。因为负载通过开放上下文创建了一个生成器。问题在于您将生成器视为序列dataset['data']' 假定存在data 可能尚不存在的东西,这就是您收到序列错误的原因。你有没有按照我建议的方式尝试过?
  • arff.load 声称返回一个字典,但它调用decoder,它表示使用open 文件,它迭代地读取行,即生成器返回。因此,虽然文档令人困惑,但如果您不想处理生成器,则应该尝试文件名调用。
  • hpaulj 你能给我一个例子吗?
猜你喜欢
  • 1970-01-01
  • 2018-02-05
  • 2018-01-23
  • 2020-08-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-07-06
  • 1970-01-01
相关资源
最近更新 更多