【问题标题】:IndexError: index out of bounds, what I am doing wrong here?IndexError:索引超出范围,我在这里做错了什么?
【发布时间】:2020-10-19 19:03:06
【问题描述】:

我收到错误 IndexError: index out of bounds

我的代码是

for i in range(len(x_particle_position)):
    x_particle_position[i] += delta_translation_hat[i] * (np.cos(particle_heading_list[i] + delta_rotation_1_hat[i]))
    print("X is" , x_particle_position[i])

知道:

x 粒子位置长度 = 5000

粒子标题列表长度 = 5000

delta_translation_hat 长度 = 1000

delta_rotation_hat 长度 = 1000

提前致谢:)

【问题讨论】:

  • 请提供足够的详细信息,以便不看您屏幕的人能够回答此问题。更好的是,尝试在玩具示例中重现错误并自行调试。
  • 你的 i 上升到 5000,但你用它来索引长度为 1000 的数组。
  • @MadPhysicist,我不确定还需要什么详细信息?谢谢:)
  • @dm2 感谢您的澄清,我认为从逻辑上讲没有办法避免此类错误,但是否有一些技巧可以跳过它的出现?
  • 堆栈跟踪将是一个好的开始。这似乎是一个简单的调试问题。您是否在调试器中运行过它并在崩溃的步骤检查了大小与索引?这是你发帖前工作的一部分。

标签: python arrays numpy indexing


【解决方案1】:

我猜有 2 个问题: 您正在遍历 (x_particle_position),但不是从 0 开始并以 (len(x_particle_position)-1) 结束,而是超出了范围 + 如前所述,您正在迭代 5000 个项目(x_particle_position),但 delta_translation_hat 只有 1000 个项目? (所以这会比上面提到的问题更快地失败)

【讨论】:

  • 5000 和 1000 的区别很重要。但是你弄错了rangerange(len(x)) 是迭代 x 时的正确用法。 0不需要,-1调整错了。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-03-10
  • 1970-01-01
  • 2016-06-28
  • 2019-11-25
  • 2020-12-13
  • 1970-01-01
相关资源
最近更新 更多