Trouver les indices d'éléments supérieurs à x
Le suivant vecteur,
a = [1, 2, 3, 4, 5, 6, 7, 8, 9]
J'ai besoin d'identifier les indices de "a" dont les éléments sont >= de 4, comme ceci:
idx = [3, 4, 5, 6, 7, 8]
Les infos dans "idx" sera utilisé pour supprimer des éléments à partir d'une autre liste X (X a le même nombre d'éléments que "a"):
del X[idx] #idx is used to delete these elements in X. But so far isn't working.
J'ai entendu dire que numpy pourrait aider. Des idées?
Merci!
source d'informationauteur Oliver Amundsen
Vous devez vous connecter pour publier un commentaire.
OK, je comprends ce que tu veux et une Seule ligne de Python sera assez:
l'aide de la liste de compréhension
Zip fonction retourne une liste de tuples
Compréhension de liste est un raccourci vers la boucle d'un élément sur la liste, qui après "dans", et d'évaluer l'élément avec l'expression, puis retourner le résultat dans une liste, vous pouvez aussi ajouter une condition sur le résultat de qui vous voulez retourner
Ce code ne fait rien, mais le retour de toutes les paires de zippée.
Ce que nous faisons est d'ajouter une condition sur en de préciser "si", suivi d'une expression booléenne
à l'aide de Itertools
Utilisation itertools.compresser avec seule ligne en Python pour terminer à proximité de cette tâche
Explication pour itertools.compresser, je pense que ce sera clair pour votre compréhension:
enumerate
renvoie l'index et la valeur de chaque élément dans un tableau. Donc, si la valeurv
est plus grand que4
insérer l'indexi
dans le nouveau tableau.Ou vous pouvez simplement modifier votre liste en place et de l'exclure de toutes les valeurs ci-dessus
4
.La plus simple à mes yeux, serait d'utiliser numpy
Explication:
np.tableau convertit un à un tableau.
np.array ()>4 donne un bool array avec tous les éléments qui doivent être conservés
Et X est filtré par le bool array de sorte que les éléments où a est plus grand que 4 sont sélectionnés (et le reste rejeté)
utilisation d'un filtre de fonction intégrée est très bien
Explication
filtre(FUN, Itérable)
cette expression va se répéter tous les éléments de Itératif et d'approvisionnement à l'AMUSEMENT de la fonction en tant qu'argument, si le retour est True ,alors la arugment sera ajouter à une liste interne
lambda x: x > 4
cela signifie qu'une fonction anonyme qui prennent un argument et tester, si plus grand que 4, et retourne True False la valeur
Votre solution
si vous essayez de supprimer tous les éléments de taille supérieure à 4 ,puis essayez de souffler