J'ai un jeu de données qui est une liste de listes, en ressemblant à ceci: sa forme est (9760,) et j'essaie de supprimer toutes les entrées où la valeur de la valeur de la valeur Le premier numéro dans chaque entrée est supérieur à 0, donc dans cet exemple, les 2e et 3e entrées seraient supprimées pour laisser p> jusqu'à présent, j'ai écrit: p> < Pré> xxx pré> Ce retour: TypeError: Les indices de liste doivent être des entiers ou des tranches, pas la liste p> Merci d'avance pour toute aide sur ce problème! P> P>
5 Réponses :
Utilisez une compréhension de la liste:
lol = [[-0.519418066, -0.680905835],[0.895518429, -0.654813183],[0.092350219, 0.135117023],[-0.299403315, -0.568458405]] filtered_lol = [l for l in lol if l[0] <= 0]
Vous pouvez utiliser une compréhension de liste qui décompresse le premier élément de chaque sous-liste et conserve uniquement ceux avec le premier élément <= 0 (en supposant que votre liste de listes est stockée en tant que variable l code>):
Vous pouvez passer à travers cela dans A pour boucle et créer une nouvelle liste sans les positifs comme: mais je préférerais plutôt utiliser le filtre Ceci est similaire à une compréhension de la liste - ou simplement à l'aide d'une boucle. Cependant, il renvoie un générateur à la place afin de ne jamais avoir à contenir deux listes en mémoire, ce qui rend le code plus efficace. P> p> construit < / Code> Fonction Si vous êtes à l'aise avec elle et faites quelque chose comme: p>
Vous parlez de "forme", alors je suppose que vous utilisez numpy. En outre, vous mentionnez np code> dans votre code exemple, vous pouvez donc appliquer OPÉRATIONS WISE ELEMENT avec Indexation booléenne array = np.array([[-0.519418066, -0.680905835],
[0.895518429, -0.654813183],
[0.092350219, 0.135117023],
[-0.299403315, -0.568458405]])
filtered = array[array[:, 0] < 0]
Vous pouvez utiliser l'indexation booléenne NUMPY code> S: >>> x = np.random.randn(10).reshape((5,2))
array([[-0.46490993, 0.09064271],
[ 1.01982349, -0.46011639],
[-0.40474591, -1.91849573],
[-0.69098115, 0.19680831],
[ 2.00139248, -1.94348869]])
>>> x[x[:,0] > 0]
array([[ 1.01982349, -0.46011639],
[ 2.00139248, -1.94348869]])
Qu'avez-vous essayé - le moyen simple de commencer est d'utiliser des boucles, rien de mal à cela. De plus, Stackoverflow n'est pas censé être un endroit pour obtenir le code écrit pour vous - c'est quelque part que vous apportez du code vous i> a écrit que cela ne fonctionne pas et demande de l'aide pour la fixer.
désolé je n'ai pas eu d'utilisation de pile débordement pendant très longtemps je vais éditer avec le code que j'ai écrit