Estoy empezando a conocer numpy, y estoy impresionado por sus afirmaciones de eficiencia tipo C con acceso a la memoria en sus ndarrays. Quería ver las diferencias entre estas y las listas de Pythonic para mí, así que ejecuté una prueba de tiempo rápida, realizando algunas de las mismas tareas simples con numpy sin ella. Numpy superó las listas regulares por un orden de magnitud en la asignación de operaciones aritméticas en matrices, como se esperaba. Sin embargo, este segmento de código, idéntico en ambas pruebas, tomó alrededor de 1/8 de segundo con una lista regular, y un poco más de 2,5 segundos con numpy:¿Cómo puedo maximizar la eficiencia con las matrices numpy?
file = open('timing.log','w')
for num in a2:
if num % 1000 == 0:
file.write("Multiple of 1000!\r\n")
file.close()
¿Alguien sabe por qué esto podría ser, y si hay ¿Hay alguna otra sintaxis que debería usar para operaciones como esta para aprovechar mejor lo que el ndarray puede hacer?
Gracias ...
EDIT: Para contestar el comentario de Wayne ... me gustan los dos cronometrado en varias ocasiones y en diferentes órdenes y dieron resultados casi idénticos cada vez, así que dudo que es otro proceso. Puse
start = time()
en la parte superior del archivo después de la importación numpy y luego tengo declaraciones como
print 'Time after traversal:\t',(time() - start)
en todas partes.
¿Puede mostrar cómo midió la hora? ¿Intentó cambiar el orden que tomó? El hecho de que esté escribiendo en un disco complica el problema del tiempo (¿qué pasaría si '[insert-process-here]' escribiera en el disco con mayor prioridad durante la prueba de numpys?) –
¡Gracias por todas las respuestas! Todos fueron informativos. ¡Lo siento, no tengo suficiente reputación para votar sobre ellos! – pr0crastin8r