[PYTHON] Wie erhalte ich eine Liste ohne Elemente, deren Index i ... ist?

Ich bin gespannt auf den schnellsten Weg, um eine Liste der Liste "Elemente" ohne * Änderungen * ohne "Elemente [i]" zu erhalten, oder auf eine relativ schnelle und intelligente Schreibweise (manchmal ohne das i-te in der Mathematik). Weil ich so etwas will).

Ich habe es mit% timeit von Jupyter gemessen.

Wenn Sie Numpy nicht verwenden

items = list(range(1000000))
i = 17 #geeignet

Scheiben kombinieren

%timeit items[:i] + items[i+1:]
11.2 ms ± 349 µs per loop (mean ± std. dev. of 7 runs, 100 loops each)

Inklusive Notation (mit enumerate)

%timeit [item for k, item in enumerate(items) if k != i]
65.1 ms ± 212 µs per loop (mean ± std. dev. of 7 runs, 10 loops each)

Einschlussnotation

%timeit [items[k] for k in range(len(items)) if k != i]
75.5 ms ± 800 µs per loop (mean ± std. dev. of 7 runs, 10 loops each)

Es scheint, dass das Schneiden überwältigend schneller ist. Ich war übrigens ein wenig überrascht, dass die Verwendung der zweiten "Aufzählung" schneller ist als die des dritten Beispiels.

Bei Verwendung von Numpy

@ antimon2's Maru Park, aber es gibt die folgenden Methoden.

import numpy as np
items = np.arange(1000000)
i = 17

np.hstack

%timeit np.hstack([items[:i], items[i+1:]])
584 µs ± 6.32 µs per loop (mean ± std. dev. of 7 runs, 1000 loops each)

np.delete

%timeit np.delete(items, i)
585 µs ± 3.73 µs per loop (mean ± std. dev. of 7 runs, 1000 loops each)

Boolescher Index

%timeit items[np.arange(items.size) != i]
1.9 ms ± 5.82 µs per loop (mean ± std. dev. of 7 runs, 1000 loops each)

Einschlussnotation

%timeit np.array([items[k] for k in range(len(items)) if k != i])
182 ms ± 3.85 ms per loop (mean ± std. dev. of 7 runs, 10 loops each)

Auch hier verbinden sich die Scheiben sehr schnell. Ist "np.delete" in Bezug auf die Lesbarkeit die beste, weil sich die Geschwindigkeit nicht so stark ändert?

Wenn Sie andere gute haben, lassen Sie es mich bitte wissen.

Recommended Posts

Wie erhalte ich eine Liste ohne Elemente, deren Index i ... ist?
So überprüfen Sie in Python, ob sich eines der Elemente einer Liste in einer anderen Liste befindet
Ich habe versucht "Wie man eine Methode in Python dekoriert"
So erhalten Sie den letzten (letzten) Wert in einer Liste in Python
So erhalten Sie eine Liste der integrierten Ausnahmen für Python
So erhalten Sie eine Liste mit Links von einer Seite aus Wikipedia
Ich habe versucht, den Index der Liste mithilfe der Aufzählungsfunktion abzurufen
[Python] So konvertieren Sie eine zweidimensionale Liste in eine eindimensionale Liste
Wie bekomme ich Stacktrace in Python?
Ich habe 6 Methoden gemessen, um den Index des Maximalwerts (Minimalwerts) der Liste zu erhalten
So löschen Sie einen Taple in einer Liste (Python)
Holen Sie sich nur Unterklassenelemente in eine Liste
Ich las "Wie man ein Hacking Lab macht"
Ich habe ein Tool erstellt, um neue Artikel zu erhalten
So entfernen Sie doppelte Elemente in der Python 3-Liste
So erhalten Sie mit Python eine Liste der Dateien im selben Verzeichnis
[Einführung in Python] So erhalten Sie den Datenindex mit der for-Anweisung
So erhalten Sie den "Namen" eines Feldes, dessen Wert durch das Auswahlattribut im Django-Modell begrenzt ist
[Python] Ich möchte nur den Index verwenden, wenn ich eine Liste mit einer for-Anweisung schleife
Konvertieren Sie das Slice-Objekt in eine Liste mit Indexnummern
So erhalten Sie einen angemeldeten Benutzer mit Djangos forms.py
Ich möchte mit dem Linux-Kernel beginnen. Wie ist die Listenkopfstruktur?
So schreiben Sie einen Listen- / Wörterbuchtyp von Python3
[Python] Ich möchte aus einer verschachtelten Liste einen Taple machen
Verwendung der Liste []
[Python] So erstellen Sie eine Liste von Zeichenfolgen Zeichen für Zeichen
So mischen Sie einen Teil der Python-Liste (at random.shuffle)
[Python] Ich möchte einen gemeinsamen Satz zwischen numpy erhalten
[Befehl] Befehl zum Abrufen einer Liste von Dateien mit Zeichen voller Breite
Holen Sie sich die Anzahl der spezifischen Elemente in der Python-Liste
Entwickelte eine Bibliothek, um die Kindle-Sammlungsliste in Python abzurufen
Discords Python 1.5 oder höher, ich kann keine Liste der Mitglieder erhalten
Ich habe versucht, mit Hy ・ Define a class zu beginnen
So zeigen Sie eine Liste der mit pyenv installierbaren Versionen an
So extrahieren Sie mit Numpy einen anderen als einen bestimmten Index
Ich habe ein Skript geschrieben, um eine beliebte Seite in Japan zu bekommen
So verbinden Sie den Inhalt der Liste mit einer Zeichenfolge
So rufen Sie eine Funktion auf
Wie man ein Terminal hackt
Es ist überraschend mühsam, eine Liste mit dem Datum und der Uhrzeit der letzten Anmeldung von Arbeitsbereichen abzurufen
Ich habe versucht, mit Pandas eine Pferderenn-Datenbank zu erstellen
Versuchen Sie, die Thread-Liste der Nachrichten (Abneigung) mit Python zu erhalten.
So erhalten Sie alle möglichen Werte in einem regulären Ausdruck
Ein Memorandum beim automatischen Erwerb mit Selen
Wie einfach ist es, ein Medikament auf dem Markt zu synthetisieren?
Ich habe ein Skript geschrieben, mit dem Sie mit hoher Geschwindigkeit mit AtCoder beginnen können!
Ich habe versucht, mit Python eine Liste von Primzahlen zu erstellen
[Python] So erhalten und ändern Sie Zeilen / Spalten / Werte aus einer Tabelle.
Ich habe versucht, das Entwicklungsstartverfahren von Django kurz zusammenzufassen
Verwendung der visuellen Erkennung, um die LINE ID von einem Mädchen zu erhalten
Ich weiß nicht, wie ich Abfrageparameter in GAE / P erhalten soll
So ermitteln Sie die Scheitelpunktkoordinaten eines Features in ArcPy
[Python] So erhalten Sie mit Enum einen Wert mit einem anderen Schlüssel als dem Wert
Ist Rs do.call () eine klassische Funktion höherer Ordnung? Erfahren Sie, wie man es benutzt
Ich möchte eine Parameterliste aus CloudFormation-Code (yaml) erstellen.
So bekommen Sie einen Ingenieur aus Ihren 30ern
So entfernen Sie Duplikate aus einer Python-Liste unter Beibehaltung der Reihenfolge.
So löschen Sie mehrere angegebene Positionen (Indizes) in einer Python-Liste
Ich habe viel recherchiert, wie Python ausgeführt wird