【问题标题】:IndexError: Too many indices in array python numpyIndexError:数组python numpy中的索引太多
【发布时间】:2019-09-04 17:58:18
【问题描述】:

我正在为分类器模型和一些重新调整值创建导出。在一位研究该领域的博士生的指导下,他为我提供了创建一个重新缩放字典供我们使用的代码。 相关代码:

PROBA_RESCALING_N_SAMPLES = 100
PROBA_RESCALING_WINDOW_RADIUS = 0.05
y_proba = classifier.predict_proba(x)
y_proba_rescaling = {proba: y[np.abs(y_proba - proba) <= PROBA_RESCALING_WINDOW_RADIUS].mean() for proba in np.linspace(0, 1, PROBA_RESCALING_N_SAMPLES)}

错误发生在最后一行,它说:

IndexError: 数组索引过多

我查看了这里的论坛以获得一些答案,并与朋友坐了一个多小时,但我仍然无法理解为什么会导致该错误。昨天的代码看起来还不错,今天突然就出问题了。

编辑:我错过了一些我忘记提及的重要细节:
1. Y 变量是一个包含 0 和 1 的数组,它代表我的数据集中用于 ML 学习的 Y 轴。
2. 我已将问题缩小到y[np.abs(y_proba - proba) &lt;= PROBA_RESCALING_WINDOW_RADIUS] 部分。单独运行它会产生错误。

【问题讨论】:

  • 该行中唯一的索引是y[...]。为什么你没有告诉我们关于那个数组的任何事情?表达式中的其他数组/变量的信息可能会有所帮助。更好的是,提供一个生成错误的最小示例。
  • 感谢您的评论!我已经纠正了我的错误,我希望它会更容易理解。
  • yshape 是什么? np.abs(y_proba - proba) &lt;= PROBA_RESCALING_WINDOW_RADIUS 产生什么? (形状,数据类型)?

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


【解决方案1】:
y[np.abs(y_proba - proba) <= PROBA_RESCALING_WINDOW_RADIUS]

你的意思是:

y[np.abs(y_proba - proba)] <= PROBA_RESCALING_WINDOW_RADIUS

括号点在哪里改变了?您正在索引 Y 列表中的比较。这不太合理。

【讨论】:

  • 不,我正在索引一个布尔值。比较返回一个值 - True 或 False。
  • 您应该尝试打印比较的每个部分,看看它们会给您什么。它们不能只是一个数字...尝试执行:print(np.abs(y_proba - proba)) 和 print(PROBA_RESCALING_WINDOW_RADIUS),然后返回结果。
猜你喜欢
  • 2014-04-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-12-08
  • 2018-05-23
  • 1970-01-01
  • 2017-10-05
  • 1970-01-01
相关资源
最近更新 更多