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