Cela pourrait être une question idiote, J'essaie d'ajouter des valeurs à un nouveau tableau vide en utilisant une boucle for et les valeurs d'un tableau en 3 dimensions précédemment défini appelé data_train_normalized, qui contient des flottants.

L'objectif est de se retrouver avec un tableau appelé x qui a la valeur du data_train_normalized dans chaque valeur de l'itération. Par exemple, x[0] doit être la valeur data_train_normalized[1,1,1]

Cet exemple de code résume ce que j'essaie de faire:

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

Et cela jette:

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
1
fikevenger 16 sept. 2020 à 18:55

2 réponses

Meilleure réponse

Les indices renvoyés à ce tableau à 3 dimensions par x, y, z sont des flottants ! Alors que Python ne prend en charge que le entier et le booléen pour les index des tableaux (l'erreur le mentionne).

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

Vous pouvez essayer de convertir x, y et z en int avant de les passer en tant qu'indices en utilisant simplement x=int(x) , y = int(y)

De plus, si vous souhaitez commencer la plage à partir de 1 uniquement, la plage (4) fera le travail! Reportez-vous à ceci pour plus d'informations: Gamme Python ()

0
Kashi 16 sept. 2020 à 16:07

Vous utilisez le paramètre x pour le tableau np et la boucle for. Utilisez un paramètre différent:

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])
0
bylds 16 sept. 2020 à 16:13