高维数组乘法疑问:NumPy中@运算符对三维数组的作用
三维NumPy数组的@运算符解析
array3的具体内容
当array1和array2为形状(3,3,3)的三维数组时,@运算符会以第一个维度作为批量维度,对后两个维度对应的二维子矩阵逐一执行矩阵乘法:
- 对于每个索引
i(范围0到2),array3[i, :, :]等价于array1[i, :, :] @ array2[i, :, :]——也就是取两个数组中第i个3x3的二维子矩阵,执行标准的矩阵乘法(行乘列求和)。 - 最终
array3的每个array3[i]都是一个3x3的结果矩阵,整体形状保持(3,3,3)。
具体到元素计算逻辑:array3[i,j,k] = sum(array1[i,j,m] * array2[i,m,k] for m in 0..2),这就是标准矩阵乘法中对应位置元素的计算方式,只是每个i都独立完成一次这样的计算。
@运算符的数学含义
这里的@实现的是批量矩阵乘法,它将三维数组视为一组二维矩阵的集合(批次),对批次中位置对应的每一对矩阵,独立执行标准的矩阵乘法运算。这种操作可以一次性完成多组矩阵的乘法计算,充分利用NumPy的向量化运算能力,在批量数据处理、深度学习等场景中能显著提升计算效率。
内容的提问来源于stack exchange,提问作者Plop
相关产品推荐
相关产品推荐

