尝试附加for循环时出现IndexError

时间:2020-09-16 15:55:35

标签: python numpy append indices

这可能是一个愚蠢的问题, 我试图使用 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

2 个答案:

答案 0 :(得分:0)

由x,y,z返回该3维数组的索引为 floats ! Python仅支持 integer Boolean 作为数组的索引(错误提到了这一点)。

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

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

此外,如果您只想从1开始范围,那么range(4)就可以了! 请参阅此以获取更多信息:Python range ()

答案 1 :(得分:0)

您正在将x参数用于np数组和for循环。使用其他参数:

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])