Transmisión
Desliza para mostrar el menú
Antes de profundizar en las operaciones matemáticas en NumPy, es importante comprender un concepto clave: broadcasting.
Broadcasting es una forma de alinear las formas de los arreglos para realizar operaciones aritméticas sin tener que redimensionarlos manualmente. En esencia, broadcasting ajusta automáticamente las formas de los arreglos.
Cuando NumPy trabaja con dos arreglos, verifica sus formas para comprobar la compatibilidad y determinar si pueden ser utilizados juntos mediante broadcasting.
Si dos arreglos ya tienen la misma forma, no se necesita broadcasting.
Mismo número de dimensiones
Supón que tienes dos arreglos para los que deseas realizar una suma, con las siguientes formas: (2, 3) y (1, 3). NumPy compara las formas de los dos arreglos empezando por la dimensión más a la derecha y moviéndose hacia la izquierda. Es decir, primero compara 3 y 3, luego 2 y 1.
Dos dimensiones se consideran compatibles si son iguales o si una de ellas es 1:
- Para las dimensiones 3 y 3, son compatibles porque son iguales;
- Para las dimensiones 2 y 1, son compatibles porque una de ellas es 1.
Como todas las dimensiones son compatibles, las formas se consideran compatibles. Por lo tanto, los arreglos pueden ser broadcasted, resultando en una operación de suma estándar entre matrices de la misma forma, que se realiza elemento por elemento.
123456789import numpy as np array_1 = np.array([[1, 2, 3], [4, 5, 6]]) print(array_1.shape) # Creating a 2D array with 1 row array_2 = np.array([[11, 12, 13]]) print(array_2.shape) # Broadcasting and element-wise addition result = array_1 + array_2 print(result)
array_2 se crea como un arreglo 2D que contiene solo una fila, por lo que su forma es (1, 3).
¿Pero qué sucedería si lo crearas como un arreglo 1D con una forma de (3,)?
Diferente número de dimensiones
Cuando un arreglo tiene menos dimensiones que el otro, las dimensiones faltantes se tratan como si tuvieran un tamaño de 1. Considera dos arreglos con formas (2, 3) y (3,). Aquí, 3 = 3, y la dimensión izquierda faltante se considera como 1, por lo que la forma (3,) se convierte en (1, 3). Dado que las formas (2, 3) y (1, 3) son compatibles, estos dos arreglos pueden ser transmitidos (broadcasted).
123456789import numpy as np array_1 = np.array([[1, 2, 3], [4, 5, 6]]) print(array_1.shape) # Creating a 1D array array_2 = np.array([11, 12, 13]) print(array_2.shape) # Broadcasting and element-wise addition result = array_1 + array_2 print(result)
Difusión de escalares
Además de las operaciones matemáticas con arreglos, también es posible realizar operaciones similares entre un arreglo y un escalar (número) gracias a la difusión. En este caso, el arreglo puede tener cualquier forma, ya que un escalar esencialmente no tiene forma, y todas sus dimensiones se consideran 1. Por lo tanto, las formas son siempre compatibles.
123456import numpy as np array = np.array([[1, 2, 3], [4, 5, 6]]) print(array.shape) # Broadcasting and element-wise addition result = array + 10 print(result)
Formas incompatibles
Ejemplo de formas incompatibles, donde no se puede realizar una operación aritmética porque el broadcasting no es posible:
Se tiene un arreglo de 2x3 y un arreglo 1D de longitud 2, es decir, una forma de (2,). La dimensión faltante se considera 1, por lo que las formas se convierten en (2, 3) y (1, 2).
Comenzando desde la dimensión más a la derecha: 3=2, por lo que inmediatamente se tienen dimensiones incompatibles, y por lo tanto formas incompatibles. Si se intenta ejecutar el código, se obtendrá un error:
12345678import numpy as np array_1 = np.array([[1, 2, 3], [4, 5, 6]]) print(array_1.shape) array_2 = np.array([11, 12]) print(array_2.shape) # ValueError result = array_1 + array_2 print(result)
¡Gracias por tus comentarios!
Pregunte a AI
Pregunte a AI
Pregunte lo que quiera o pruebe una de las preguntas sugeridas para comenzar nuestra charla