【问题标题】:'IndexError: too many indices for array''IndexError: 数组索引过多'
【发布时间】:2020-09-26 02:15:16
【问题描述】:

我正在尝试在 Jupyter Notebooks 中自学 NumPy:

我有一个名为“study_minutes”的数组

但尝试使用study_minutes[1, 0]study_minutes[(1, 0)] 访问时,出现错误:

---------------------------------------------------------------------------
NameError                                 Traceback (most recent call last)
<ipython-input-1-0fb6eb80a6ee> in <module>
----> 1 study_minutes[1, 1] = 360

NameError: name 'study_minutes' is not defined

我正在使用的教程中的源代码给出了同样的错误,

知道为什么吗?我被难住了

非常感谢,

【问题讨论】:

  • 您是否在特定单元格中定义study_minutes,然后稍后在同一单元格中调用该数组? Jupyter 对于新手来说可能有点棘手,因为单元运行时间都是相互依赖的。
  • 嗨迈克尔,谢谢你的回复——我不确定我第一天使用它——我希望有一种上传 Jupyter 文件(教程中的那个)的方法,因为即使这样一个对我来说似乎不正确!

标签: python numpy


【解决方案1】:

你确定是太多索引错误吗?最后一个 NameError 是说您没有初始化数组。 如果您仍然收到错误并且您认为是由于索引过多错误check this solution

【讨论】:

  • 谢谢 iLuuPii,我认为数组是在这里初始化的:study_minutes = np.zeros(100, np.uint16) 这看起来正确吗?非常感谢
  • 这就是问题所在;这是一个一维数组,但您将其称为二维数组。
  • 这是完整的代码:这仍然不正确吗? study_minutes = np.array([ study_minutes, np.zeros(100, np.uint16) ]) study_minutes[1][0] = 60 rand = np.random.RandomState(42) fake_log = rand.randint(30, 180, size=100, dtype=np.uint16) fake_log [fake_log[3], fake_log[8]] fake_log[[3, 8]] index = np.array([ [3, 8], [0, 1] ]) fake_log[index] study_minutes = np.append(study_minutes, [fake_log], axis=0) study_minutes[1, 1] = 360
  • 如果你通过在初始数组上调用study_minutes.shape 来查看你的形状,你会看到你得到(100,),因为 NumPy 是如何在内部处理维度的。如果你想调用一维数组的索引,你只需要传递一个像study_minutes[1] 这样的变量,它就会返回一个值。
  • 如果您想将数组转换为 2D,您可以通过 np.array([1,2,3]).reshape((1,-1)) 之类的方法使用一种称为“reshape”的方法,现在可以代替 (100,) 的 1D 形状,NumPy 将其视为(100,1) 的 2D 形状
猜你喜欢
  • 2019-07-17
  • 2020-09-14
  • 2018-05-23
  • 1970-01-01
  • 2020-04-10
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多