0Pricing
Pandas & NumPy Academy · Lección

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 slower

ufuncs 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))  # 120

np.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

  1. Funciones universales (ufuncs)
  2. Funciones de agregación
  3. Reglas de broadcasting
  4. Enmascaramiento booleano e indexación avanzada
← Volver a Pandas & NumPy Academy