You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

不同维度NumPy数组的矩阵乘法:保持原形状的实现方法

NumPy数组与矩阵的批量乘法实现

我们有一个形状为(3, 2, 4)的NumPy数组A,包含6个1×4的向量,定义如下:

import numpy as np
A = np.array([
    [[1,2,3,4], [5,6,7,8]],
    [[7,8,9,10], [11,12,13,14]],
    [[15,16,17,18], [19,20,21,22]]
])

另有一个形状为(4, 4)的矩阵B:

B = np.array([
    [1,2,3,4],
    [5,6,7,8],
    [9,10,11,12],
    [13,14,15,16]
])

需求是让矩阵B与A中的每个1×4向量执行矩阵乘法,且结果保持和A相同的(3, 2, 4)形状,预期结果如下:

result = np.array([
    [[90, 100, 110, 120], [202, 228, 254, 280]],
    [[258, 292, 326, 360], [370, 420, 470, 520]],
    [[482, 548, 614, 680], [594, 676, 758, 840]]
])

解决方案

方法1:使用@运算符(推荐)

NumPy的@运算符支持广播机制,直接对A和B执行矩阵乘法即可。A的最后一维(4)与B的第一维(4)匹配,广播会自动遍历A的前两维,输出结果保持原形状:

result = A @ B

验证形状:

print(result.shape)  # 输出 (3, 2, 4)

方法2:使用np.matmul函数

np.matmul是专门用于矩阵乘法的函数,功能与@运算符完全等价,同样支持广播:

result = np.matmul(A, B)

方法3:使用np.dot函数

np.dot也能实现该需求,不过在高维数组场景下,matmul和@的语义更明确,更推荐使用前两种方法:

result = np.dot(A, B)

内容的提问来源于stack exchange,提问作者Math Explorer

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.02 01:50:23