Una array 3D no es más que una colección (o una pila) de muchas arrays 2D, al igual que una array 2D es una colección/pila de muchos vectores 1D. Por lo tanto, la multiplicación de arrays de arrays 3D implica múltiples multiplicaciones de arrays 2D, que finalmente se reduce a un producto escalar entre sus vectores fila/columna.
Consideremos un ejemplo de array A de forma (3,3,2) multiplicada por otra array 3D B de forma (3,2,4).
Python
import numpy as np np.random.seed(42) A = np.random.randint(0, 10, size=(3, 3, 2)) B = np.random.randint(0, 10, size=(3, 2, 4)) print("A:\n{}, shape={}\nB:\n{}, shape={}".format( A, A.shape, B, B.shape))
PRODUCCIÓN:
La primera array es una pila de tres arrays 2D, cada una de forma (3,2), y la segunda array es una pila de 3 arrays 2D, cada una de forma (2,4).
La multiplicación de arrays entre estos dos implicará tres multiplicaciones entre arrays 2D correspondientes de A y B que tienen formas (3,2) y (2,4) respectivamente. En concreto, la primera multiplicación será entre A[0] y B[0], la segunda multiplicación será entre A[1] y B[1] y, por último, la tercera multiplicación será entre A[2] y B[ 2]. El resultado de cada multiplicación individual de arrays 2D será de forma (3,4). Por tanto, el producto final de las dos arrays 3D será una array de forma (3,3,4).
Realicemos esto usando código.
Python
C = np.matmul(A, B) print("Product C:\n{}, shape={}".format(C, C.shape))
Producción:
Publicación traducida automáticamente
Artículo escrito por hemanthvenkata8 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA