Saltar al contenido

Difusión de matrices de numpy para operaciones aritméticas

Tengo dos matrices tridimensionales, A y B. La matriz A es la misma que la anterior con forma (2,3,4). El conjunto B se define como:

1B = np.arange(8).reshape(2,1,4)

pitón

Difusión de matrices de numpy para operaciones aritméticas
Difusión de matrices de numpy para operaciones aritméticas

Y tiene la forma:

1B.shape

pitón

Salida:

1(2,1,4)

pitón

Y tiene el valor:

Salida:

12array([[[0,1,2,3]],[[4,5,6,7]]])

pitón

Para saber si una operación aritmética es posible con estas dos matrices, sólo hay que revisar las reglas. Las dimensiones de entrada y salida coinciden. Y, para la otra dimensión, una de las dimensiones es una. Así que una operación aritmética es posible.

1A+B

pitón

Salida:

1234567array([[[0,2,4,6],[4,6,8,10],[8,10,12,14]],[[16,18,20,22],[20,22,24,26],[24,26,28,30]]])

pitón

Pero si tratas de añadir dos matrices que no pueden ser emitidas debido a formas incompatibles, obtendrás un error.

12B = np.arange(18).reshape(2,3,3)A+B

pitón

Salida:

1ValorError: los operandos no podían ser emitidos junto con las formas (2,3,4)(2,3,3)

pitón

Aquí, el problema es con la dimensión de seguimiento:

En general, se puede observar la forma de las matrices de entrada y decidir si la radiodifusión permitirá realizar la operación o no. También puedes predecir la forma de la matriz final que es el tamaño más alto a lo largo de cada dimensión en las matrices de entrada.

Por ejemplo, en una operación aritmética se pueden utilizar los siguientes pares de matrices:

(3,2) y (1,) produce el conjunto de salida (3,2)(3,1,4,1) y (1,7,4,3) produce el conjunto de salida (3,7,4,3)

Los siguientes pares de matrices no pueden ser utilizados en una operación aritmética debido a la falta de coincidencia de tamaño en la dimensión de seguimiento:

(3,2) y (1,3)(3,1,4,2) y (1,7,4,3)