Sto solo conoscendo Numpy e sono impressionato dalle sue affermazioni sull'efficienza di tipo C con accesso alla memoria nei suoi narghilè. Volevo vedere da solo le differenze tra queste e le liste pitoniche, quindi ho eseguito un rapido test di temporizzazione, eseguendo alcune delle stesse semplici operazioni con Numpy senza di essa. Numpy ha surclassato gli elenchi regolari di un ordine di grandezza nell'allocazione delle operazioni aritmetiche sugli array, come previsto. Ma questo segmento di codice, identico in entrambe le prove, ha richiesto circa 1/8 di secondo con una lista regolare, e un po 'più di 2,5 secondi con NumPy:Come massimizzare l'efficienza con gli array numpy?
file = open('timing.log','w')
for num in a2:
if num % 1000 == 0:
file.write("Multiple of 1000!\r\n")
file.close()
Qualcuno sa il motivo per cui questo potrebbe essere, e se non ci è qualche altra sintassi che dovrei usare per operazioni come questa per sfruttare al meglio ciò che può fare narray?
Grazie ...
EDIT: Per rispondere a un commento di Wayne ... entrambi ho cronometrato più volte e in diversi ordini e ottenuto risultati praticamente identici ogni volta, quindi dubito che sia un altro processo. Inserisco
start = time()
nella parte superiore del file dopo l'importazione numpy e quindi ho istruzioni come
print 'Time after traversal:\t',(time() - start)
in tutto.
Puoi mostrare come hai misurato il tempo? Hai provato a scambiare quale ordine hai preso? Il fatto che tu stia scrivendo su disco complica il problema del timing (cosa succede se '[insert-process-here]' sta scrivendo su disco con priorità maggiore durante il test di numpys?) –
Grazie per tutte le risposte! Tutto era informativo. Mi dispiace, non ho abbastanza reputazione per votare su di loro! – pr0crastin8r