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

如何用Numpy实现列向量b与转置列向量c的矩阵乘法?

问题根源

numpy中的一维数组(比如[1,1])没有行/列维度的区分,np.transpose(c)不会改变它的维度,结果仍是一维数组。此时b * d执行的是元素逐位相乘(广播后的对应元素运算),所以得到的还是一维向量。

解决方法

方法1:显式转换为二维数组,使用矩阵乘法运算符@

把b转成列向量(形状(2,1)),c转成行向量(形状(1,2)),然后用@执行矩阵乘法:

import numpy as np
b = np.array([1,1])
c = np.array([0,1])

# 转换b为列向量,c为行向量
b_col = b.reshape(-1, 1)  # 形状(2,1)
c_row = c.reshape(1, -1)  # 形状(1,2)
A = b_col @ c_row
print(A)

输出:

[[0 1]
 [0 1]]

方法2:直接使用np.outer计算外积

np.outer(b, c)专门用于计算列向量b与行向量c^T的乘积,一步到位:

import numpy as np
b = np.array([1,1])
c = np.array([0,1])

A = np.outer(b, c)
print(A)

输出与方法1完全一致。

方法3:利用numpy广播机制实现外积

通过[:, None]给一维数组增加维度,触发广播后逐元素相乘,结果等价于目标矩阵:

import numpy as np
b = np.array([1,1])
c = np.array([0,1])

A = b[:, None] * c[None, :]
print(A)

输出同样符合预期。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.31 11:11:20