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

如何用Numpy将矩阵与向量相乘生成三维矩阵?

实现MxN矩阵与L维向量的三维元素级扩展乘法

你要实现的是将二维矩阵与一维向量进行广播式元素相乘,最终得到三维矩阵,核心是利用数组的维度扩展和广播机制,下面给出几种高效实现方式(以Python的NumPy为例,这是数值计算的标准工具):

方法1:利用NumPy广播机制(推荐)

NumPy的广播会自动对齐不同维度的数组,只需手动将矩阵扩展一个维度,再与向量相乘即可:

import numpy as np

# 示例数据:2x3矩阵A,4维向量b
A = np.array([[1, 2, 3], [4, 5, 6]])
b = np.array([10, 20, 30, 40])

# 将A扩展为MxNx1的三维数组,与b自动广播相乘
C = A[:, :, np.newaxis] * b
# 等价写法:C = A[..., np.newaxis] * b
  • A[:, :, np.newaxis]把原(2,3)的A变成(2,3,1),b会被自动广播为(1,1,4),两者逐元素相乘后得到(2,3,4)的三维矩阵,完全满足C[m,n,k] = A[m,n] * b[k]的要求。

方法2:外积+维度重构

先将矩阵展平为一维数组,与向量做外积得到二维矩阵,再重构回三维:

# 展平A后与b做外积,再reshape为目标维度
C = np.outer(A.flatten(), b).reshape(A.shape[0], A.shape[1], len(b))

这种方式逻辑直观,适合理解外积扩展的本质,但效率和广播方法基本一致。

验证结果

可以通过索引取值验证:

print(C[0, 1, 2])  # 输出60,对应A[0,1]*b[2] = 2*30=60
print(C.shape)     # 输出(2, 3, 4),符合MxNxL的维度要求

原生Python实现(仅小数据量演示)

如果不用NumPy,也可以用嵌套循环实现,但性能远不如NumPy,仅作参考:

M, N = A.shape
L = len(b)
C = []
for m in range(M):
    row = []
    for n in range(N):
        elem = [A[m][n] * b[k] for k in range(L)]
        row.append(elem)
    C.append(row)
# 转成NumPy数组:C = np.array(C)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.06 10:45:18