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

如何在NumPy中执行ndarray的(1×3)(3×3)(3×1)矩阵乘法得到1×1结果?

在NumPy中实现(1×3)×(3×3)×(3×1)的矩阵乘法

首先还原你的数组定义:

import numpy as np

a = np.array([1, 2, 3])
B = np.array([[1, 2, 3],
              [2, 2, 7],
              [3, 4, 6]])

下面提供几种简洁的实现方式:

方法1:链式调用np.dot

利用矩阵乘法的结合律,分两步完成运算:

# 先计算a与B的乘积,再和a的转置相乘
result = a.dot(B).dot(a.T)
# 输出:array(129)

也可以调整结合顺序,先算B和a转置的乘积:

result = a.dot(B.dot(a.T))

方法2:使用@矩阵乘法运算符(Python 3.5+)

@是NumPy原生支持的矩阵乘法语法,写法更贴近数学表达式:

result = a @ B @ a.T
# 输出:129

方法3:利用np.einsum(爱因斯坦求和约定)

通过指定维度的收缩规则,精准实现运算:

result = np.einsum('i,ij,j->', a, B, a)
# 输出:129

这里的'i,ij,j->'表示:匹配第一个数组的i维度、第二个数组的i/j维度、第三个数组的j维度,最终收缩所有维度得到标量结果。

以上所有方法最终都会得到你需要的1×1结果(实际表现为NumPy标量或0维数组,数值为129)。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.08 23:56:15