Je veux carré même des valeurs d'index dans une matrice numpie et assignez la même chose dans ce tableau. J'ai suivi 2 approches.
1 - p> qui fonctionne. P> 2 - p> arr[i] = arr[i]**2 for i in range(len(arr)) if i % 2 == 0
File "<ipython-input-149-30fc7ed25f1f>", line 1
arr[i] = arr[i]**2 for i in range(len(arr)) if i % 2 == 0
^
SyntaxError: invalid syntax
3 Réponses :
Je suppose que vous essayez de faire compréhension de la liste , pour lequel votre syntaxe est légèrement éteinte, lisez la syntaxe de la compréhension de la liste.
Sa syntaxe est similaire à [EXP1 (élément) si condition1 autre exp2 (élément) pour l'élément en arr] code>.
La bonne façon de le faire est la suivante. arr = [1,2,3,4,5,6]
arr = [arr[i]**2 if i % 2 == 0 else arr[i] for i in range(len(arr))]
print(arr)
#[1, 2, 9, 4, 25, 6]
Ce n'est pas une solution numpopique?
Nulle part a-t-il d'utiliser Numpy dans son code! Donc j'ai fourni une solution générique
Vrai, mais il mentionne spécifiquement juste avant le code qu'il utilise une matrice numpue ...
Boucle pas sur des matrices numpopiques Vous perdez toute la puissance de NUMPY.
Utilisez ces fonctions numpues pour obtenir le résultat requis à la place: P>
[ 1 9 1 1 0 6 5 2 1 5 ] [ 1 81 1 1 0 36 5 4 1 25]
Ceci fonctionne avec la compréhension de la liste: mais vous pouvez également utiliser le plus court: p>
Arr [:: 2] = Arr [:: 2] ** 2 code> est de loin la meilleure solution de style numpy de toutes les solutions!
Ne boucle pas sur un tableau NUMPY, vous perdez la puissance du code optimisé. Utilisez plutôt NP.where - voir ma réponse ci-dessous.