0
votes

Supprimer des valeurs> 0 dans le jeu de données

J'ai un jeu de données qui est une liste de listes, en ressemblant à ceci: xxx

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 xxx

jusqu'à présent, j'ai écrit: < Pré> xxx

Ce retour: TypeError: Les indices de liste doivent être des entiers ou des tranches, pas la liste

Merci d'avance pour toute aide sur ce problème!


2 commentaires

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


5 Réponses :


0
votes

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]


0 commentaires

0
votes

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 ): xxx


0 commentaires

0
votes

Vous pouvez passer à travers cela dans A pour boucle et créer une nouvelle liste sans les positifs comme: xxx

mais je préférerais plutôt utiliser le filtre construit < / Code> Fonction Si vous êtes à l'aise avec elle et faites quelque chose comme: xxx

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.


0 commentaires

1
votes

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]


0 commentaires

1
votes

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


0 commentaires