Ich bin gerade dabei, numpy zu kennen, und ich bin beeindruckt von seinen Behauptungen von C-ähnlicher Effizienz mit Speicherzugriff in seinen ndarrays. Ich wollte die Unterschiede zwischen diesen und pythonischen Listen für mich selbst sehen, also führte ich einen schnellen Timing-Test durch, indem ich ein paar der gleichen einfachen Aufgaben ohne Numpy ausführte. Numpy deklassierte reguläre Listen um eine Größenordnung in der Zuweisung von und arithmetischen Operationen an Arrays, wie erwartet. Aber das Codesegment, identisch in beiden Tests dauerte etwa 1/8 eine Sekunde mit einer regelmäßigen Liste, und etwas mehr als 2,5 Sekunden mit numpy:Wie maximiere ich die Effizienz mit numpy Arrays?
file = open('timing.log','w')
for num in a2:
if num % 1000 == 0:
file.write("Multiple of 1000!\r\n")
file.close()
Weiß jemand, warum dies auch sein mag, und wenn es ist eine andere Syntax, die ich für Operationen wie diese verwenden sollte, um besser zu nutzen, was der NDarray tun kann?
Dank ...
EDIT: Waynes Kommentar zu beantworten ... ich sie zeitlich sowohl wiederholt und in verschiedenen Ordnungen und bekam so ziemlich die gleichen Ergebnisse jedes Mal, so dass ich bezweifle, dass es ein anderer Prozess ist. Ich habe
start = time()
an der Spitze der Datei nach dem numpy Import und dann habe ich überall Anweisungen wie
print 'Time after traversal:\t',(time() - start)
.
Können Sie zeigen, wie Sie die Zeit gemessen haben? Hast du versucht, deine Bestellung zu tauschen? Die Tatsache, dass Sie auf die Festplatte schreiben, verkompliziert das Timing-Problem (was wäre, wenn '[insert-process-here]' während des numpys-Tests mit höherer Priorität auf die Festplatte geschrieben wurde?) –
Vielen Dank für alle Antworten! Alle waren informativ. Tut mir leid, ich habe nicht genug Ruf, um über sie abzustimmen! – pr0crastin8r