NumPy 3D矩阵乘法

NumPy 3D矩阵乘法

三维矩阵只不过是许多二维矩阵的集合(或堆栈),就像二维矩阵是许多一维向量的集合/堆栈一样。因此,三维矩阵的矩阵乘法涉及多个二维矩阵的乘法,最终归结为行/列向量之间的点乘。

让我们考虑一个形状为(3,3,2)的矩阵A与另一个形状为(3,2,4)的三维矩阵B相乘的例子。

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))

OUTPUT:

NumPy - 3D矩阵乘法

第一个矩阵是三个二维矩阵的堆叠,每个矩阵的形状为(3,2),第二个矩阵是三个二维矩阵的堆叠,每个矩阵的形状为(2,4)。

这两者之间的矩阵乘法将涉及到A和B的相应二维矩阵之间的三次乘法,其形状分别为(3,2)和(2,4)。具体来说,第一次乘法将在A[0]和B[0]之间进行,第二次乘法将在A[1]和B[1]之间进行,最后,第三次乘法将在A[2]和B[2]之间进行。二维矩阵的每个单独的乘法结果将是(3,4)的形状。因此,两个三维矩阵的最终产物将是一个形状为(3,3,4)的矩阵。

让我们用代码来实现这一点。

C = np.matmul(A, B)
  
print("Product C:\n{}, shape={}".format(C, C.shape))

输出:

NumPy - 3D矩阵乘法

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程