Una forma superrápida de hacer bucles en Python

May 10 2022
¿Crees que Python es lento? Aquí hay una forma rápida de hacer un bucle en Python
Python es conocido por ser un lenguaje de programación lento. Aunque es un hecho que Python es más lento que otros lenguajes, existen algunas formas de acelerar nuestro código Python.
Imagen vía Shutterstock bajo licencia de Frank Andrade

Python es conocido por ser un lenguaje de programación lento. Aunque es un hecho que Python es más lento que otros lenguajes, existen algunas formas de acelerar nuestro código Python.

¿Cómo? Simple, optimiza tu código.

Si escribimos código que consume poca memoria y almacenamiento, no solo haremos el trabajo, sino que también haremos que nuestro código Python se ejecute más rápido.

Aquí hay una forma rápida y súper rápida de hacer un bucle en Python que aprendí en uno de los cursos de Python que tomé (¡nunca dejamos de aprender!).

El ciclo promedio

Digamos que queremos sumar los números del 1 al 100000000 (es posible que nunca lo hagamos, pero ese gran número me ayudará a expresar mi punto).

Un enfoque típico sería crear una variable total_sum=0, recorrer un rango e incrementar el valor de total_sumby ien cada iteración.

Esto hace el trabajo, pero toma alrededor de 6,58 segundos.

Aunque ahora no parece tan lento, se volverá más lento a medida que agregue más 0 al número dentro del rango.

¡Aceleremos esto!

Una forma más rápida de hacer loops usando funciones integradas

Una forma más rápida de hacer un bucle en Python es usar funciones integradas.

En nuestro ejemplo, podríamos reemplazar el bucle for con la sumfunción. Esta función sumará los valores dentro del rango de números.

El código anterior tarda 0,84 segundos. ¡Es mucho más rápido que el bucle anterior que usamos! Esta es la razón por la que debemos elegir funciones integradas en lugar de bucles.

Pero todavía hay margen de mejora.

Una forma súper rápida de hacer loops usando Numpy

Hace unas semanas, en un curso de ciencia de datos que tomé , aprendí que una de esas prácticas de ingeniería de software que debo seguir para convertirme en un mejor científico de datos es optimizar mi código.

Podemos optimizar bucles mediante operaciones de vectorización. Este es uno o dos órdenes de magnitud más rápido que sus equivalentes puros de Python (especialmente en cálculos numéricos).

La vectorización es algo que podemos conseguir con NumPy. Numpy es una biblioteca con estructuras de datos eficientes diseñadas para contener datos de matriz. Está escrito principalmente en C, por lo que la velocidad es algo con lo que puede contar.

Intentemos usar los métodos Numpy .sumy .arangeen lugar de las funciones de Python.

Esto hace el trabajo en 0,22 segundos. Esto es mucho más rápido que los enfoques anteriores.

Esta es la razón por la que debe usar operaciones vectoriales sobre bucles siempre que sea posible.

Poniendo bucles y Numpy a prueba con más cálculos

Hasta ahora hemos visto una aplicación simple de Numpy, pero ¿qué pasa si no solo tenemos un bucle for, sino también una condición if y más cálculos que hacer?

Aquí es cuando Numpy supera claramente a los bucles.

Imagine que tenemos una serie de puntajes de exámenes aleatorios (del 1 al 100) y queremos obtener el puntaje promedio de aquellos que reprobaron el examen (puntaje <70).

Así es como haríamos esto con un bucle for.

Eso toma aproximadamente 15.7 segundos. No está mal, pero podemos obtener resultados más rápidos con Numpy.

Así es como haríamos esto con Numpy.

El código anterior tarda unos 0,78 segundos. ¡Eso es mucho más rápido y el código es sencillo!

¿Aprender ciencia de datos con Python? Obtenga mi hoja de referencia GRATUITA de Python para la ciencia de datos uniéndose a mi lista de correo electrónico con más de 10 000 personas.

Si te gusta leer historias como estas y quieres apoyarme como escritor, considera registrarte para convertirte en miembro de Medium. Cuesta $ 5 al mes, lo que le brinda acceso ilimitado a miles de guías de Python y artículos de ciencia de datos. Si te registras usando mi enlace , ganaré una pequeña comisión sin costo adicional para ti.

© Copyright 2021 - 2022 | unogogo.com | All Rights Reserved