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

如何用numpy.matmul实现批量对应2×2矩阵相乘(无循环)

批量对应位置矩阵乘法的无循环实现

首先纠正你示例中的问题:你需求的数组形状是(2000,2,2),但示例里创建的是(2,2,2000),这是导致后续报错的核心原因之一。针对你实际需求的(2000,2,2)数组,有两种简单的无循环实现方式:

方法1:使用np.matmul

当数组的第一个维度是批量轴(即2000组2×2矩阵)时,np.matmul会自动对每组对应位置的矩阵执行乘法运算,直接得到目标形状的结果:

import numpy as np
a = np.ones((2000, 2, 2))
b = np.ones((2000, 2, 2))
result = np.matmul(a, b)
print(result.shape)  # 输出 (2000, 2, 2)

每个结果矩阵的元素都是2(因为1×1+1×1=2),符合矩阵乘法的预期。

方法2:使用@运算符

@是np.matmul的语法糖,用法更简洁,效果完全一致:

result = a @ b

如果你确实需要处理(2,2,2000)形状的数组

可以用np.einsum指定维度对应关系,实现批量矩阵乘法:

a = np.ones((2,2,2000))
b = np.ones((2,2,2000))
result = np.einsum('ijk,jlk->ilk', a, b)
print(result.shape)  # 输出 (2,2,2000)
# 若需要转换为(2000,2,2),可执行转置
result = result.transpose(2, 0, 1)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.04 19:35:18