0Pricing
Learn AI with Python · Lección

Broadcasting y operaciones vectorizadas

Cómo funciona el broadcasting, operaciones elemento a elemento y cómo evitar bucles mediante vectorización.

Broadcasting y operaciones vectorizadas es una lección gratuita de Learn AI with Python en CoddyKit. Esta es la lección 3 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 Learn AI with Python, y tu progreso se sincroniza en la web y la app de CoddyKit. El curso de Learn AI with Python incluye 4 lecciones en total.

¿Por qué vectorizar?

NumPy opera sobre arrays completos a la velocidad de C. Sustituir los bucles de Python por expresiones de arrays, lo que se denomina vectorización, suele ser entre 10 y 100 veces más rápido.

Operaciones elemento a elemento

Los operadores aritméticos se aplican elemento a elemento cuando las formas coinciden. No es necesario ningún bucle.

import numpy as np
a = np.array([1, 2, 3])
b = np.array([10, 20, 30])
print(a + b)   # [11 22 33]
print(a * b)   # [10 40 90]

Broadcasting de escalares

Una operación entre un array y un escalar aplica el escalar a todos los elementos. El escalar se propaga mediante broadcasting por todo el array.

a = np.array([1, 2, 3, 4])
print(a * 10)   # [10 20 30 40]
print(a + 100)  # [101 102 103 104]

¿Qué es el broadcasting?

El broadcasting permite a NumPy combinar arrays de formas distintas al expandir virtualmente el más pequeño, sin copiar memoria.

La regla del broadcasting

Compare las formas empezando por la dimensión final (la situada más a la derecha). Dos dimensiones son compatibles cuando son iguales o cuando una de ellas es 1. Una dimensión de tamaño 1 se expande para coincidir.

# (3, 4) with (4,)   -> compatible (trailing 4 matches)
# (3, 4) with (3, 1)  -> compatible (1 stretches to 4)
# (3, 4) with (3,)    -> ERROR (trailing 4 vs 3)

Broadcasting de un vector fila

Un array 1D cuya longitud es igual al número de columnas se suma a todas las filas.

m = np.array([[1, 2, 3], [4, 5, 6]])
row = np.array([10, 20, 30])
print(m + row)
# [[11 22 33]
#  [14 25 36]]

Broadcasting de un vector columna

Cambie la forma de un vector para convertirlo en una columna (shape (n,1)), de modo que se propague por las columnas en lugar de por las filas.

col = np.array([[100], [200]])   # shape (2, 1)
print(m + col)
# [[101 102 103]
#  [204 205 206]]

Centrado de datos (uso real)

Restar la media de cada columna centra cada característica, un paso habitual de preprocesamiento que se realiza en una sola línea con broadcasting.

data = np.array([[1.0, 10.0], [2.0, 20.0], [3.0, 30.0]])
centered = data - data.mean(axis=0)
print(centered)
# columns now have mean 0

Funciones universales (ufuncs)

NumPy incluye funciones matemáticas rápidas que operan elemento a elemento, llamadas ufuncs: np.sqrt, np.log, np.exp y muchas más. Están vectorizadas y tienen en cuenta el broadcasting.

a = np.array([1.0, 4.0, 9.0, 16.0])
print(np.sqrt(a))   # [1. 2. 3. 4.]
print(np.log(a))    # natural log of each element
print(np.exp([0, 1]))  # [1.        2.71828183]

Velocidad: bucle frente a vectorización

La misma operación es mucho más rápida cuando se vectoriza. Use %timeit para apreciar la diferencia con un millón de elementos.

big = np.arange(1000000, dtype=float)
# Slow Python loop:
# %timeit [x*x for x in big]
# Fast vectorized:
%timeit big * big   # typically tens of times faster

Combinación de operaciones vectorizadas

Encadene ufuncs y operaciones aritméticas para expresar directamente las fórmulas. Esto calcula una curva gaussiana sin bucles.

x = np.linspace(-3, 3, 7)
y = np.exp(-x**2 / 2)
print(np.round(y, 3))

Comprobación rápida

Ponga a prueba sus conocimientos sobre broadcasting.

Resumen

Conceptos esenciales de la vectorización:

  • Las operaciones elemento a elemento evitan los bucles de Python y se ejecutan a la velocidad de C
  • El broadcasting alinea las dimensiones finales; los tamaños deben coincidir o ser 1
  • Use vectores columna (n,1) para propagar valores por las columnas
  • ufuncs: np.sqrt, np.log, np.exp
  • Centre los datos con data - data.mean(axis=0)

Preguntas frecuentes

¿La lección «Broadcasting y operaciones vectorizadas» es gratis?

Sí — el texto completo de «Broadcasting y operaciones vectorizadas» 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 Learn AI with Python, actualiza a CoddyKit PRO. El curso de Learn AI with Python incluye 4 lecciones en total.

¿Qué aprenderé en «Broadcasting y operaciones vectorizadas»?

Cómo funciona el broadcasting, operaciones elemento a elemento y cómo evitar bucles mediante vectorización. Practicas Learn AI with Python 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 Learn AI with Python?

No se requiere experiencia previa. Learn AI with Python 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 3 de 4.

¿Cuánto tiempo toma la lección «Broadcasting y operaciones vectorizadas»?

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 Learn AI with Python?

Sí. Cada lección de Learn AI with Python 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. Creación y propiedades de arrays
  2. Indexación, slicing e indexación avanzada
  3. Broadcasting y operaciones vectorizadas
  4. Álgebra lineal con NumPy
← Volver a Learn AI with Python