Difusión (broadcasting)

Introducción a NumPy

Izzy Weber

Core Curriculum Manager, DataCamp

Introducción a la difusión

 

Un gráfico que muestra dos arrays con formas diferentes siendo sumados

Introducción a NumPy

Difundir un escalar

Imagen que muestra un array 2D sumado al número 2  

Imagen que muestra un array 2D sumado a cualquier array lleno de doses con la misma forma

Introducción a NumPy

Reglas de compatibilidad

  • NumPy compara los conjuntos de dimensiones de derecha a izquierda  

 

 

 

 

Un gráfico aplicando las reglas de compatibilidad a formas (10, 5) y (10, 1)

Introducción a NumPy

Reglas de compatibilidad

  • NumPy compara los conjuntos de dimensiones de derecha a izquierda
  • Dos dimensiones son compatibles cuando...
    • Una tiene longitud uno o
    • Tienen la misma longitud
  • Todos los conjuntos deben ser compatibles

 

Un gráfico aplicando las reglas de compatibilidad a formas (10, 5) y (10, 1)

Introducción a NumPy

¿Difusibles o no?

 

Formas difusibles:

  • (10, 5) y (10, 1)
  • (10, 5) y (5, )

 

Formas no difusibles:

  • (10, 5) y (5, 10)
  • (10, 5) y (10, )
Introducción a NumPy

Difusión por filas

Un array de forma (2, 5) sumado a un array de forma (1, 5)

 

array = np.arange(10).reshape((2, 5))
array + np.array([0, 1, 2, 3, 4])
array([[ 0,  2,  4,  6,  8],
       [ 5,  7,  9, 11, 13]])
Introducción a NumPy

Difusión por filas

 

 

Un array de forma (2, 5) sumado a un array de forma (2, 5)

Introducción a NumPy

Difusión incompatible

 

Un gráfico que muestra que sumar un array de forma (2, 5) con uno de forma (2,) genera un ValueError.

 

array = np.arange(10).reshape((2, 5))
array + np.array([0, 1])
ValueError: operands could not be broadcast together with shapes (2,5) (2,) 
Introducción a NumPy

Difusión por columnas

Un gráfico que muestra un array de forma (2, 5) y otro de forma (2, 1) siendo sumados

array = np.arange(10).reshape((2, 5))
array + np.array([0, 1]).reshape((2, 1))
array([[ 0,  1,  2,  3,  4],
       [ 6,  7,  8,  9, 10]])
Introducción a NumPy

Difusión por columnas

 

 

Un gráfico que muestra la columna única extendida por columnas sobre un array con la misma forma que el mayor

Introducción a NumPy

Otros operadores

Un array de forma (2, 2) multiplicado por un array de forma (2, 1)

Un array de forma (2, ) restado de un array de forma (2, 2)

Introducción a NumPy

¡Vamos a practicar!

Introducción a NumPy

Preparing Video For Download...