Il existe plusieurs façons d'ajouter un élément à la fin d'un tableau Python, selon que vous utilisez le type liste ou le type numpy ndarray. Je me demandais à quel point la vitesse d'exécution serait différente par ces méthodes, alors quand Karukuda l'a recherchée, Comparaison de l'append contre le type de liste Seule l'entrée / 20/10/2014/110304) a été trouvée (je suis désolé si la recherche était insuffisante). Par conséquent, nous étudierons la vitesse d'exécution de la méthode d'ajout d'éléments aux trois séquences présentées dans la section suivante par une simple expérience. Le nombre de fois que des éléments ont été ajoutés était de 100 000 et le module de temps a été utilisé pour la mesure du temps. Le code utilisé dans l'expérience est placé à la toute fin.
Comment utiliser list.append. Il s'agit d'une méthode intégrée à Python en standard et qui devrait être une méthode que même les débutants de Python utilisent souvent.
x = []
for i in range( 10 ):
x.append( i )
Comment utiliser numpy.append.
import numpy as np
x = np.array( [] )
for i in range( 10 ):
x = np.append( x, i )
Comment utiliser numpy.hstack.
import numpy as np
x = np.array( [] )
for i in range( 10 ):
x = np.hstack( (x,i) )
Temps d'exécution (secondes) | |
---|---|
list.append | 0.0149400234222 |
numpy.append | 4.47969698906 |
numpy.hstack | 4.75327301025 |
Je m'y attendais un peu, mais list.append est extrêmement rapide. Et il n'y a pas de différence de vitesse entre numpy.append et numpy.hstack. Après tout, si vous connaissez à l'avance la taille du tableau requis, il semble que la bonne réponse soit d'utiliser ndarray, sinon utilisez list.
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