Es gibt verschiedene Möglichkeiten, ein Element am Ende eines Python-Arrays hinzuzufügen, je nachdem, ob Sie den Listentyp oder den numpy ndarray-Typ verwenden. Ich habe mich gefragt, um wie viel sich die Ausführungsgeschwindigkeit bei diesen Methoden unterscheiden würde. Als Karukuda sie nachschlug, Vergleich des Anhängens mit dem Listentyp Es wurde nur der Eintrag (20.10.2014/110304) gefunden (es tut mir leid, wenn nicht genügend Nachforschungen angestellt wurden). Daher werden wir die Ausführungsgeschwindigkeit der Methode zum Hinzufügen von Elementen zu den drei im nächsten Abschnitt gezeigten Sequenzen durch ein einfaches Experiment untersuchen. Die Anzahl der hinzugefügten Elemente betrug 100.000, und das Zeitmodul wurde zur Zeitmessung verwendet. Der im Experiment verwendete Code steht ganz am Ende.
Verwendung von list.append. Dies ist eine Methode, die standardmäßig in Python integriert ist und die selbst Anfänger von Python häufig verwenden sollten.
x = []
for i in range( 10 ):
x.append( i )
Verwendung von numpy.append.
import numpy as np
x = np.array( [] )
for i in range( 10 ):
x = np.append( x, i )
Verwendung von numpy.hstack.
import numpy as np
x = np.array( [] )
for i in range( 10 ):
x = np.hstack( (x,i) )
Ausführungszeit (Sekunden) | |
---|---|
list.append | 0.0149400234222 |
numpy.append | 4.47969698906 |
numpy.hstack | 4.75327301025 |
Ich habe es ein wenig erwartet, aber list.append ist überwältigend schnell. Und es gibt keinen Geschwindigkeitsunterschied zwischen numpy.append und numpy.hstack. Wenn Sie die Größe des erforderlichen Arrays im Voraus kennen, scheint es die richtige Antwort zu sein, ndarray zu verwenden, andernfalls list zu verwenden.
import numpy as np
def stdAppend(n):
x = []
for i in range(n):
x.append(i)
return
def npAppend(n):
x = np.array( [] )
for i in range(n):
x = np.append(x,i)
return
def npHstack(n):
x = np.array( [] )
for i in range(n):
x = np.hstack( (x,i) )
return
if __name__ == '__main__':
import time
n = 100000
start = time.time()
stdAppend(n)
ttime = time.time() - start
print( "stdAppend: %s" % ttime )
start = time.time()
npAppend(n)
ttime = time.time() - start
print( "npAppend : %s" % ttime )
start = time.time()
npHstack(n)
ttime = time.time() - start
print( "npHstack : %s" % ttime )
Recommended Posts