TypeError: liste des indices doivent être des entiers, pas de tuple lorsque vous essayez de modifier certains éléments d'une liste de tableaux
J'ai une liste de 2 par n tableaux de coordonnées x et y.
old: [array([[1, 2, 3], [4, 5, 6]]), array([[10, 20, 30], [40, 50, 60]])]
Je suis en train de décalage de l'axe des coordonnées, la deuxième ligne de chaque tableau, par une certaine valeur de la 'shift'. Cependant, lorsque j'essaie de le faire par la méthode ci-dessous, j'obtiens une erreur:
"TypeError: liste des indices doivent être des entiers, pas de tuple lorsque vous essayez de modifier certains éléments d'une liste de tableaux."
import pylab
def shiftY(old,shift):
new = list([])
for i in arange(len(old)):
y = old[i][1,:] + shift
newItem = array([old[:,0],y])
new.append(newItem)
return new
old = list()
old.append(arr
ay([[1, 2, 3], [4, 5, 6]]))
old.append(array([[10,20,30],[40,50,60]]))
shift =3
new=shiftY(old,shift)
print(new)
Traceback:
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "C:\Python27_32bit\lib\site-packages\spyderlib\widgets\externalshell\sitecustomize.py", line 540, in runfile
execfile(filename, namespace)
File "C:/Users/tald574/testShifty.py", line 25, in <module>
new=shiftY(old,shift)
File "C:/Users/tald574/testShifty.py", line 15, in shiftY
newItem = array([old[:,0],y])
TypeError: list indices must be integers, not tuple
Je ne vois pas ce que je fais de mal que newItem
n'est même pas censé être une liste, il devrait être un tableau 2D. Vous en serais reconnaissant si quelqu'un peut me dire ce que je fais mal un comment résoudre le problème.
Grâce.
Edit:
Le résultat attendu de ce test serait,
new:[array([[1, 2, 3], [7, 8, 9]]), array([[10, 20, 30], [43, 53, 63]])]
- Je pense qu'il y a un saut de ligne dans la ligne commençant par
old.append(arr
qui ne devraient pas y être old[:,0]
n'est pas de corriger la syntaxe de python. qu'est-ce que la sémantique de cette chose?- vous voulez probablement
newItem = array(old[i][:,0]),y]
- En python une liste est essentiellement un tableau(c/c++)
- il y a des erreurs de syntaxe à tous sur ce code. tous les besoins de retravailler. Bonne question mérite d'être posée.
- Pourriez-vous les gars être un peu plus précis w.r.t. les erreurs de syntaxe. Je n'ai pas d'erreurs de syntaxe lors de l'exécution du code et apprécie les non-critique règles de syntaxe que je ne sais pas. J'ai appris le python je sais que pour moi, que j'ai peut-être manqué de la syntaxe correcte des conférences.
Vous devez vous connecter pour publier un commentaire.
Vous n'avez pas besoin de les virgules dans la liste de découpage de la notation.
array[:,i]
est analysée commearray[:t]
, oùt = ,i
est un n-uplet. Voir ici pour un aperçu de la liste de le trancher.Tuples sont définie par des virgules, pas de parenthèses.
Dans votre cas, remplacer les lignes
avec
Droit, je me sens bête maintenant.
J'ai travaillé sur cette question depuis trop longtemps et bien entendu, j'ai trouver la réponse dans les 15 minutes suivant l'affichage de cette question.
J'ai fait deux erreurs dans l'attribution de "newitem'.
au lieu de
J'aurais utilisé:
Qui est, je dois accéder à l'élément approprié dans la liste, vieux[i] plutôt que de vieux.
Et j'ai besoin d'accéder à l'élément approprié dans le tableau vieux[i][0,:] plutôt que de vieux[i][:,0].
Erreur de débutant, j'espère que cela aide quelqu'un d'autre.
Modifier, oh wow, seulement maintenant de voir tous les commentaires et réponses à ma question, merci les gars, j'ai pris si longtemps parce que j'ai incorporé ce dans mon projet actuel, plutôt que de simplement le script de test. Acclamations de toute façon.