【问题标题】:IndexError when trying to append with for loop尝试附加 for 循环时出现 IndexError
【发布时间】:2021-01-03 12:08:31
【问题描述】:

这可能是一个愚蠢的问题, 我正在尝试使用 for 循环 将值附加到一个新的空数组以及来自先前定义的名为 data_train_normalized 的 3 维数组中的值,该数组包含浮点数。

目标是最终得到一个名为 x 的数组,该数组在迭代的每个值中都有来自 data_train_normalized 的值。例如,x[0] 应该是值data_train_normalized[1,1,1]

此示例代码总结了我正在尝试做的事情:

x=np.array([])
for z in range(1,4):
  for x in range(1,4):
    for y in range(1,4):
      x = np.append(x,data_train_normalized[z][x][y])

这会抛出:

IndexError                                Traceback (most recent call last)
<ipython-input-43-b0e7b7ab30e9> in <module>()
      3   for x in range(1,4):
      4     for y in range(1,4):
----> 5       x = np.append(x,data_train_normalized[z][x][y])
      6 #      print(data_train_normalized[z][x][y], z, x, y)

IndexError: arrays used as indices must be of integer (or boolean) type

【问题讨论】:

  • np.append 不是一个好用的函数。坚持使用列表追加。

标签: python numpy append indices


【解决方案1】:

x,y,z 返回到该 3 维数组的索引是 浮点数!而 Python 仅支持 integerBoolean 用于数组索引(错误中提到了这一点)。

IndexError: arrays used as indices must be of integer (or boolean) type.

您可以尝试将 x 、 y 和 z 转换为 int ,然后将它们作为索引传递,只需使用 x=int(x) , y = int(y)

此外,如果您只想从 1 开始范围,那么 range(4) 将完成工作! 更多信息请参考:Python range ()

【讨论】:

    【解决方案2】:

    您正在为 np 数组和 for 循环使用 x 参数。使用不同的参数:

    arr = np.array([])
    for z in range(1,4):
      for x in range(1,4):
        for y in range(1,4):
          arr  = np.append(arr, data_train_normalized[z][x][y])
    

    【讨论】:

    • 谢谢你让我意识到这个愚蠢的错误,这次使用符号对我没有任何帮助。
    猜你喜欢
    • 2023-03-13
    • 1970-01-01
    • 1970-01-01
    • 2020-03-02
    • 1970-01-01
    • 1970-01-01
    • 2018-05-11
    • 2021-03-16
    • 1970-01-01
    相关资源
    最近更新 更多