So löschen Sie ein Objekt aus einem numby Array, ohne den Index zu kennen

11

ist es möglich, ein Objekt aus einem numpy Array zu löschen, ohne den Index des Objekts zu kennen, sondern das Objekt selbst zu kennen?

Ich habe gesehen, dass es möglich ist, den Index des Objekts mit der Funktion np.delete zu verwenden, aber ich suche nach einer Möglichkeit, das Objekt, aber nicht seinen Index

zu verwenden

Beispiel:

  

[a, b, c, d, e, f]

     

x = e

Ich möchte x löschen

thx im Voraus

    
MhmdMnsr 01.04.2016, 21:18
quelle

3 Antworten

13

Sie können den Index / die Indizes des Objekts mit np finden. argwwhere , und löschen Sie dann das / die Objekt (e) mit np .delete .

Beispiel:

%Vor%     
jojonas 01.04.2016, 21:34
quelle
6

Wirf es als ein numpy Array ab, und es gibt eine sehr einfache Methode :

%Vor%

Muss nicht komplizierter sein als das.

    
Ulf Aslak 01.04.2016 23:36
quelle
2

Die boolesche Indizierung oder Maskierung ist eine gute Methode, um bestimmte Elemente eines Arrays auszuwählen oder zu entfernen

Sie sprechen über das Entfernen eines bestimmten "Objekts". Nehmen wir das wörtlich und definieren Sie ein Array von dtype-Objekten:

%Vor%

Hinter den Kulissen argwhere und delete verwenden Sie dies. Beachten Sie, dass argwhere das Array x==d boolean verwendet und es in Array-Indizes konvertiert. Und eine solche Maske zu konstruieren ist eine Möglichkeit, auf die delete wirkt.

Es gibt einige wichtige Grenzen:

  • Dieser Gleichheitstest (oder Nichtgleichheitstest) muss für Ihre Werte funktionieren. Es kann nicht sein, wenn die Elemente floats sind.

  • Löschen aus einem 1d-Array ist einfacher als aus einem 2d (oder größer). Mit 2d müssen Sie entscheiden, ob Sie eine Zeile, eine Spalte oder ein Element löschen wollen (und dabei das Array flacher machen).

  • das Löschen von nur einem Element dieser Übereinstimmungen ist etwas kniffliger.

In einigen Fällen ist es möglicherweise besser, .tolist() des Arrays zu verwenden und eine Listenmethode zu verwenden.

%Vor%

Es gibt keine exakte Entsprechung zu list.remove für Arrays.

    
hpaulj 01.04.2016 23:01
quelle

Tags und Links