9
votes

Suppression d'éléments d'un tableau

J'ai un tableau numpy et je veux supprimer les 3 premiers éléments du tableau. J'ai essayé cette solution:

           a = np.arange(0,10)
           i=0
           while(i<3):
             del a[0]
             i=i+1


0 commentaires

4 Réponses :


20
votes

Les tableaux numpus ont une taille fixe, vous ne pouvez donc pas simplement supprimer un élément d'eux. Le moyen le plus simple d'atteindre ce que vous voulez est d'utiliser la tranchée: xxx

Ceci créera un nouveau tableau à partir du 4ème élément du tableau d'origine.

pour certains scénarios , la tranchée n'est tout simplement pas suffisante. Si vous souhaitez créer un sous-réseau composé d'éléments spécifiques à partir du tableau d'origine, vous pouvez utiliser un autre tableau pour sélectionner les indices: xxx

si fondamentalement, a [[ 1,4,5]] retournera un tableau composé des éléments 1,4 et 5 de la matrice d'origine.


4 commentaires

@Neil: Vous avez raison. C'était en fait ma première version, mais alors, pour une raison tordue, je l'ai changée à 4.


Pour être correct: la tranchée de base ne crée pas de nouveau tableau, mais une nouvelle vue sur les données sous-jacentes, voir docs.cipy.org/doc/numpy/reference/arrays.indexing.html , qui est une raison pour laquelle NUMPY est aussi rapide que le code C dans de nombreux cas.


@Rock: correct! J'avais cela confondu avec Python régulier, ce qui crée effectivement un nouveau tableau.


Si vous souhaitez remplacer les données sous-jacentes avec la vue, utilisez deepcopy dans la copie package "pour faire a = de profondculy (A [3:])



1
votes

Les tableaux numpus ne prennent pas en charge la suppression de l'élément. Pourquoi n'utilisez-vous pas simplement la tranchée pour atteindre ce que vous voulez? XXX


0 commentaires

11
votes

Cela fonctionne pour moi: xxx

où "A" est vos tableaux numpus et k est la position de l'index que vous souhaitez supprimer.

espère que cela aide.


0 commentaires

-1
votes

Vous pouvez le convertir en liste, puis essayer des commandes de suppression régulières telles que POP, Del, par exemple.

a = np.array([1,2,3,4,5])
l = list(a)
l.pop(3)
l
>>[1, 2, 3, 5]


0 commentaires