Funciones universales (ufuncs)
Aplique a los arrays funciones integradas elemento a elemento, como np.sqrt, np.abs, np.exp y np.log, sin escribir bucles.
Funciones universales (ufuncs) es una lección gratuita de Pandas & NumPy Academy en CoddyKit. Esta es la lección 1 de 4. Puedes leer la lección completa abajo gratuitamente — luego la practicas en el navegador con un editor de código integrado y un tutor de IA 24/7. Forma parte de la ruta de aprendizaje de Pandas & NumPy Academy, y tu progreso se sincroniza en la web y la app de CoddyKit. El curso de Pandas & NumPy Academy incluye 4 lecciones en total.
¿Qué son las ufuncs?
Las funciones universales (ufuncs) ejecutan una operación matemática sobre cada elemento de un array a la vez, en C compilado y de forma rápida, mucho más rápido que un bucle de Python. ⚡
import numpy as np
a = np.array([1.0, 4.0, 9.0, 16.0])
print(np.sqrt(a)) # [1. 2. 3. 4.]
# Equivalent Python loop would be hundreds of times slowerufuncs matemáticas: sqrt, exp, log
Todas sus funciones matemáticas favoritas son ufuncs: np.sqrt, np.exp, np.log y muchas más. Se aplican a arrays completos a la vez y gestionan los casos límite correctamente.
import numpy as np
a = np.array([0.0, 1.0, 2.0, 3.0])
print(np.exp(a)) # [1. 2.718 7.389 20.086]
print(np.log(np.exp(a))) # [0. 1. 2. 3.]
print(np.log2(np.array([1, 2, 4, 8]))) # [0. 1. 2. 3.]ufuncs trigonométricas
Las ufuncs trigonométricas de NumPy, como np.sin y np.cos, esperan ángulos en radianes. Use np.deg2rad para convertir primero los grados.
import numpy as np
angles = np.array([0, 30, 60, 90])
rad = np.deg2rad(angles)
print(np.sin(rad).round(4)) # [0. 0.5 0.866 1. ]
print(np.cos(rad).round(4)) # [1. 0.866 0.5 0. ]np.abs, np.floor, np.ceil, np.round
Para redondear, use np.floor (hacia abajo), np.ceil (hacia arriba) y np.round (al más cercano). Limpian los valores float de todo el array en una sola operación.
import numpy as np
a = np.array([-2.7, 0.4, 1.5, 3.9])
print(np.abs(a)) # [2.7 0.4 1.5 3.9]
print(np.floor(a)) # [-3. 0. 1. 3.]
print(np.ceil(a)) # [-2. 1. 2. 4.]
print(np.round(a)) # [-3. 0. 2. 4.]np.maximum y np.minimum
np.maximum(a, b) toma el valor mayor en cada posición entre dos arrays; es diferente de np.max, que devuelve un solo número. ¡np.maximum(a, 0) es ReLU!
import numpy as np
a = np.array([-3, 1, 5, -2, 4])
b = np.array([0, 0, 3, 3, 3])
print(np.maximum(a, b)) # [0 1 5 3 4]
print(np.minimum(a, b)) # [-3 0 3 -2 3]
# ReLU
print(np.maximum(a, 0)) # [0 1 5 0 4]np.clip para limitar valores
np.clip mantiene cada elemento dentro de un intervalo: cualquier valor demasiado bajo sube hasta el mínimo y cualquier valor demasiado alto baja hasta el máximo. Es ideal para limitar valores.
import numpy as np
a = np.array([0.1, 0.5, -0.2, 1.3, 0.9])
clipped = np.clip(a, 0.0, 1.0)
print(clipped) # [0.1 0.5 0. 1. 0.9]ufuncs en arrays multidimensionales
Las ufuncs funcionan con arrays de cualquier forma. La operación matemática se aplica a cada elemento por separado y el resultado conserva la misma forma, sin necesidad de cambiarla.
import numpy as np
m = np.array([[1.0, 4.0], [9.0, 16.0]])
print(np.sqrt(m))
# [[1. 2.]
# [3. 4.]]Parámetro out para ahorrar memoria
Toda ufunc acepta un argumento out= para escribir los resultados en un array que ya tenga. Así se evita crear un array nuevo, algo útil en bucles intensivos y con restricciones de memoria.
import numpy as np
a = np.array([1.0, 4.0, 9.0])
result = np.empty(3)
np.sqrt(a, out=result) # write directly into result
print(result) # [1. 2. 3.]np.add.reduce y .accumulate
Cada ufunc tiene un método .reduce() que combina todos los elementos (np.add.reduce equivale a sum) y .accumulate() para obtener totales acumulados.
import numpy as np
a = np.array([1, 2, 3, 4, 5])
print(np.add.reduce(a)) # 15
print(np.add.accumulate(a)) # [ 1 3 6 10 15]
print(np.multiply.reduce(a)) # 120np.frompyfunc para crear ufuncs personalizadas
np.frompyfunc convierte cualquier función de Python en una ufunc que puede aplicar a arrays. Es más lenta que las funciones integradas, así que resérvela para crear prototipos rápidamente.
import numpy as np
def clamp_positive(x):
return x if x > 0 else 0.0
vfunc = np.frompyfunc(clamp_positive, 1, 1)
a = np.array([-2, 3, -1, 5])
print(vfunc(a)) # [0.0 3 0.0 5] (object dtype)Comparar ufuncs con bucles de Python
La diferencia de velocidad es enorme: con un millón de elementos, una ufunc puede ser unas 200 veces más rápida que un bucle de Python. En cálculos numéricos, recurra siempre primero a las ufuncs. 🚀
import numpy as np
import time
a = np.random.rand(1_000_000)
start = time.perf_counter()
np.sqrt(a)
print('ufunc:', round(time.perf_counter() - start, 4), 's')
start = time.perf_counter()
[x ** 0.5 for x in a]
print('loop:', round(time.perf_counter() - start, 4), 's')Comprobación rápida
Compruebe sus conocimientos sobre las ufuncs de NumPy en esta lección.
Resumen de la lección
¡Buen trabajo! Las ufuncs realizan operaciones matemáticas elemento a elemento en C de forma rápida, incluyen sqrt, exp, log y funciones trigonométricas, y el argumento out= ahorra memoria. A continuación: las funciones de agregación.
Preguntas frecuentes
¿La lección «Funciones universales (ufuncs)» es gratis?
Sí — el texto completo de «Funciones universales (ufuncs)» es gratis para leer aquí en la web. Para practicarla de forma interactiva (editor de código integrado y tutor de IA 24/7) y desbloquear el resto del curso de Pandas & NumPy Academy, actualiza a CoddyKit PRO. El curso de Pandas & NumPy Academy incluye 4 lecciones en total.
¿Qué aprenderé en «Funciones universales (ufuncs)»?
Aplique a los arrays funciones integradas elemento a elemento, como np.sqrt, np.abs, np.exp y np.log, sin escribir bucles. Practicas Pandas & NumPy Academy con código real que ejecutas directamente en el navegador, y un tutor de IA 24/7 responde tus preguntas mientras trabajas en la lección.
¿Necesito experiencia previa para empezar Pandas & NumPy Academy?
No se requiere experiencia previa. Pandas & NumPy Academy en CoddyKit está estructurado para principiantes hasta estudiantes avanzados, así que puedes empezar aquí o desde el inicio y avanzar a tu ritmo. Esta es la lección 1 de 4.
¿Cuánto tiempo toma la lección «Funciones universales (ufuncs)»?
La mayoría de las lecciones de CoddyKit toman alrededor de 5–10 minutos. Cada una es compacta e interactiva, así que avanzas constantemente y retomas exactamente por donde dejaste en la web y la app.
¿Puedo escribir y ejecutar código en esta lección de Pandas & NumPy Academy?
Sí. Cada lección de Pandas & NumPy Academy incluye un editor de código integrado, así que escribes y ejecutas código real directamente en tu navegador y obtienes retroalimentación instantánea de IA — sin configuración local necesaria.
Todas las lecciones de este curso
- Funciones universales (ufuncs)
- Funciones de agregación
- Reglas de broadcasting
- Enmascaramiento booleano e indexación avanzada