Broadcasting¶
Broadcasting es un término utilizado en NumPy para describir la forma en que las operaciones entre arrays con diferentes formas se manejan automáticamente por NumPy. En otras palabras, cuando se realizan operaciones aritméticas entre dos arrays de diferentes formas, NumPy ajusta automáticamente la forma del array más pequeño para que coincida con la forma del array más grande antes de realizar la operación. Esto permite que las operaciones se realicen de manera eficiente sin la necesidad de crear copias adicionales de los datos.
Las reglas de broadcasting en NumPy son las siguientes:
Si los dos arrays tienen el mismo número de dimensiones, pero las formas no son iguales, NumPy agrega 1 a la forma del array más pequeño para que coincida con la forma del array más grande.
Si la forma de los dos arrays no es la misma y no tienen el mismo número de dimensiones, NumPy agrega 1 a las dimensiones menos y expande las formas de los arrays para que sean iguales en la dimensión más alta.
Si la forma de los dos arrays no es la misma y alguna dimensión no coincide, NumPy genera un error.
import numpy as np
# example 01
a = np.arange(3)+ 5
print(f"np.arange(3) + 5:\n{a}" )
np.arange(3) + 5: [5 6 7]
# example 02
b = np.ones((3,3))+np.arange(3)
print(f"np.ones((3,3)) + np.arange(3):\n{b}" )
np.ones((3,3)) + np.arange(3): [[1. 2. 3.] [1. 2. 3.] [1. 2. 3.]]
# example 03
c = np.arange(3).reshape((3,1)) + np.arange(3)
print(f"np.arange(3).reshape((3,1)) + np.arange(3):\n{c }" )
np.arange(3).reshape((3,1)) + np.arange(3): [[0 1 2] [1 2 3] [2 3 4]]