网易首页 > 网易号 > 正文 申请入驻

Python 线性代数 06:外积

0
分享至

点积将两个等长向量转换为一个标量,外积则将两个向量组合成一个矩阵。外积计算两个向量所有分量之间的两两乘积,可以表示特征交互、构造秩一矩阵,也可以用于组织二阶统计信息。

在 Python 中,可以使用嵌套循环或列表推导式实现外积,也可以使用 NumPy 的 np.outer()。对于批量向量,还可以通过增加轴和广播,一次计算多组对应向量的外积。

一、什么是外积

1、外积的基本定义

外积(Outer Product)将两个向量转换为一个矩阵。

设两个实数列向量分别为:

将 b 转置为行向量后,a 与 b 的外积写为:

其结果是一个 m × n 矩阵:

矩阵中第 i 行、第 j 列的元素为:

外积会将 a 中的每个分量分别与 b 中的所有分量相乘。

2、外积的形状

如果:

那么:

外积不要求两个向量具有相同维数。

例如,一个三维向量与一个二维向量进行外积,会得到一个 3 × 2 矩阵。

对于两个一维 NumPy 数组,形状关系为:

(m,) 与 (n,) → (m, n)

3、手工计算示例

设:

将 b 转置为行向量:

因此:

结果包含 3 行、2 列。第一个向量的维数决定行数,第二个向量的维数决定列数。

二、外积与其他向量运算

1、外积与点积

对于两个同维列向量 a、b ∈ ℝⁿ,点积可以写为:

点积将对应分量相乘后求和,结果是标量。

对于 a ∈ ℝᵐ、b ∈ ℝⁿ,外积为:

外积不会对两两乘积求和,结果是矩阵。

二者的核心区别是:

点积计算对应分量的乘积并求和;

外积计算所有分量组合的乘积。

2、外积与逐元素乘法

逐元素乘法要求两个向量形状相同:

它只计算对应位置的乘积,结果仍是向量。

外积计算所有位置组合的乘积,结果是矩阵。例如,两个三维向量进行逐元素乘法得到 3 个结果,进行外积则得到包含 9 个元素的 3 × 3 矩阵。

3、外积与叉积

外积有时会与叉积(Cross Product)混淆。

在常见的三维欧几里得空间中,叉积作用于两个三维向量,结果是一个垂直于二者的新向量;外积可以作用于不同维数的向量,结果是矩阵。

因此:

外积:向量与向量生成矩阵;

叉积:三维向量与三维向量生成向量。

三、外积矩阵的结构

外积生成的矩阵具有特殊结构。由于矩阵中的每一行和每一列都来自同一个向量的缩放,因此外积矩阵只包含一个独立方向的信息。

1、每一行都是同一行向量的缩放

设:

矩阵 M 的第 i 行为:

因此,每一行都是 bᵀ 的一个标量倍数。

对于前面的示例:

三行分别为:

可以看出,不同行之间只是缩放关系,并没有产生新的行方向。

2、每一列都是同一列向量的缩放

矩阵 M 的第 j 列为:

因此,每一列都是 a 的一个标量倍数。

前面矩阵的两列分别为:

外积矩阵的所有行都沿着同一个行方向,所有列也都沿着同一个列方向。

3、外积生成秩一矩阵

矩阵的(Rank)表示矩阵中相互独立的行或列的数量,可以用来描述矩阵包含的独立方向。

如果 a 和 b 都不是零向量,则:

这种矩阵称为秩一矩阵(Rank-One Matrix)。

这是因为外积矩阵中的每一行都是同一个向量 bᵀ 的倍数,每一列都是同一个向量 a 的倍数,因此不存在额外的独立方向。

如果任意一个向量是零向量,则:

此时结果是零矩阵,其秩为 0。

矩阵秩的完整定义和计算方法将在后续“矩阵秩与独立信息”中进一步讨论。

4、秩一矩阵如何作用于向量

设:

则:

其中:

表示向量 b 与 x 的点积,结果是一个标量。

因此:

这个过程可以理解为:

先计算输入向量 x 与方向 b 的点积,得到一个缩放系数;

再使用该系数缩放向量 a。

因此,秩一矩阵作用后的结果始终位于向量 a 张成的一维空间中。

四、外积的基本性质

设 a、u ∈ ℝᵐ,b、v ∈ ℝⁿ,c、d ∈ ℝ。

1、交换顺序会得到转置矩阵

交换两个向量的顺序后,结果矩阵的行列结构会互换:

如果 a 是 m 维向量、b 是 n 维向量,那么 a bᵀ 的形状为 m × n,b aᵀ 的形状为 n × m。

因此,外积通常不具有交换性。

2、对向量加法满足分配律

对第一个向量满足:

对第二个向量也满足:

3、标量可以合并

两个向量分别缩放后再计算外积,相当于用两个缩放系数的乘积缩放原外积矩阵。

4、向量与自身的外积

向量 a 与自身的外积为:

它是对称矩阵:

它还是半正定矩阵。对于任意同维向量 x:

例如:

则:

其对角线元素是各分量的平方,非对角线元素是不同分量之间的乘积。

五、使用 Python 基本语法计算外积

1、使用嵌套循环

可以使用两个循环遍历两个向量中的所有分量:

print(outer_product)

输出:

[[8, 10], [-4, -5], [12, 15]]

外层循环依次选择 a 中的分量,内层循环将当前分量与 b 中的所有分量相乘,从而生成矩阵的一行。

2、使用列表推导式

相同的计算也可以使用嵌套列表推导式完成:

print(outer_product)

输出:

[[8, 10], [-4, -5], [12, 15]]

外层推导式生成矩阵的各行,内层推导式生成当前行中的各个元素。

六、使用 NumPy 计算外积

1、使用 np.outer()

NumPy 可以使用 np.outer() 直接计算两个一维数组的外积:

print(result.shape)

输出:

(3, 2)

np.outer(a, b) 会将 a 中的每个元素与 b 中的每个元素相乘,结果形状为:(len(a), len(b))。

需要注意,np.outer() 会先将输入展平。因此,它适合计算两个一维数组的外积;对于多维数组,应先确认展平是否符合计算目的。

2、使用增加轴与广播

外积也可以通过增加长度为 1 的轴实现:

print(result.shape)

输出:

(3, 2)

其中:

a[:, np.newaxis] 将形状 (3,) 转换为 (3, 1);

b[np.newaxis, :] 将形状 (2,) 转换为 (1, 2);

两个数组逐元素相乘时,通过广播得到形状 (3, 2)。

广播关系为:

(3, 1) 与 (1, 2) → (3, 2)

这种写法明确保留了两个向量对应的轴,也便于扩展到批量外积。

3、使用 np.multiply.outer()

NumPy 还提供 np.multiply.outer():

result = np.multiply.outer(a, b)

对于两个一维数组,它与 np.outer(a, b) 得到相同结果。

np.multiply.outer() 不会像 np.outer() 那样先将输入展平,而是保留输入数组原有的轴。若 A 的形状为 (p, q),B 的形状为 (r, s),则结果形状为 (p, q, r, s)。

对于普通一维向量,使用 np.outer() 更直观;需要保留多维数组原有轴时,可以使用 np.multiply.outer()。

七、批量计算多个外积

在数据处理中,经常需要为多组对应向量分别计算外积。

设数组 A 中的每一行是一个 m 维向量,数组 B 中的每一行是一个 n 维向量,并且两者包含相同数量的样本:

print(B.shape)

输出:

(2, 3)

可以通过增加轴计算每一对对应向量的外积:

print(batch_outer.shape)

输出:

(2, 2, 3)

其中:

第 0 个矩阵是 A[0] 与 B[0] 的外积;

第 1 个矩阵是 A[1] 与 B[1] 的外积。

增加轴后的形状关系为:

(batch, m, 1) 与 (batch, 1, n) → (batch, m, n)

这种方法只计算相同样本位置上的两组向量,不会在不同样本之间交叉组合。

八、外积在 AI 编程中的应用

1、构造两组特征之间的交互

设两组特征分别为:

它们的外积为:

这个矩阵包含两组特征之间所有可能的两两乘积,可用于表示不同特征之间的交互关系。

在多模态特征融合、双线性模型和二阶特征处理中,外积可以将两个向量之间的组合信息显式展开。

外积生成的矩阵规模可能较大,因此实际计算中常配合压缩、矩阵分解或低秩近似使用。

2、构造二阶特征矩阵

一个向量与自身的外积:

包含各分量的平方以及不同分量之间的乘积。

例如:

则:

这类矩阵可以表示单个样本内部各特征之间的二阶关系。

在统计分析中,中心化样本向量与自身的外积还是构造协方差矩阵的基本组成部分。

3、进行秩一矩阵更新

外积可以直接构造秩一矩阵,因此常用于对已有矩阵进行秩一更新:

其中:

M 是原矩阵;

a 和 b 决定更新的列方向和行方向;

η 控制更新幅度。

多个外积之和可以形成秩不超过 r 的矩阵:

更准确地说:

因此,外积既可用于秩一更新,也可作为构造低秩矩阵的基本单元。矩阵秩、分解与低秩近似将在后续文章中系统讨论。

九、常见问题及使用建议

1、不要使用 * 直接代替外积

对于两个形状相同的一维 NumPy 数组:

a * b

表示逐元素乘法,不是外积。

计算外积可以使用:

np.outer(a, b)

也可以增加轴后通过广播计算:

a[:, np.newaxis] * b[np.newaxis, :]

2、注意外积的顺序

交换两个向量的顺序,会交换结果矩阵的行列结构:

编写代码前,应先确定哪个向量对应结果的行,哪个向量对应结果的列。

3、注意 np.outer() 会展平输入

如果将二维或更高维数组直接传入 np.outer(),NumPy 会先将它们展平,再计算外积。

因此,批量外积不应直接使用:

np.outer(A, B)

应通过增加轴和广播等方法明确保留样本维度。

4、零向量会生成零矩阵

如果任意一个向量是零向量,外积结果就是零矩阵,其秩为 0,而不是秩一矩阵。

5、外积可能快速增加数据规模

m 维向量与 n 维向量的外积包含 m × n 个元素。

例如,两个长度均为 10000 的向量进行外积,会生成包含一亿个元素的矩阵。若数据类型为 64 位浮点数,仅数组数据通常就需要约 800 MB 内存。

在高维应用中,应根据计算目的考虑低秩表示、分块计算或隐式计算,避免不必要地构造完整外积矩阵。

小结

外积计算两个向量所有分量之间的两两乘积,并生成矩阵。非零向量的外积构成秩一矩阵,其所有列沿同一方向、所有行也沿同一方向。Python 可以使用嵌套循环、np.outer() 或增加轴与广播计算外积,并扩展到特征交互、二阶信息表示和低秩更新。


点赞有美意,赞赏是鼓励

特别声明:以上内容(如有图片或视频亦包括在内)为自媒体平台“网易号”用户上传并发布,本平台仅提供信息存储服务。

Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.

相关推荐
热点推荐
斯瓦泰克输了,却救了凯斯一命?郑钦文“让五追七”不止是奇迹

斯瓦泰克输了,却救了凯斯一命?郑钦文“让五追七”不止是奇迹

夏花依旧v
2026-09-08 15:03:00
历届奥斯卡影帝封神之作(2000-2006):27种人生,27种活法

历届奥斯卡影帝封神之作(2000-2006):27种人生,27种活法

可乐谈情感
2026-09-07 00:32:05
刘畊宏直播间凉了,“老板娘”的身材戳破了多少人的减肥梦?

刘畊宏直播间凉了,“老板娘”的身材戳破了多少人的减肥梦?

看尽落尘花q
2026-08-23 19:28:46
国际时装周,张柏芝嫩了,宋佳干瘪消瘦,被膀大腰圆的朱珠抢了镜

国际时装周,张柏芝嫩了,宋佳干瘪消瘦,被膀大腰圆的朱珠抢了镜

洲洲影视娱评
2026-09-07 13:55:02
A股“股王”,直线拉升!

A股“股王”,直线拉升!

新浪财经
2026-09-08 10:52:37
“抱歉,我们不收全职宝妈的孩子”,托管班摊牌了,老师:太对了

“抱歉,我们不收全职宝妈的孩子”,托管班摊牌了,老师:太对了

熙熙说教
2026-09-07 20:39:43
卯兔提醒:9月8到13号,有三人要跟你“清账”

卯兔提醒:9月8到13号,有三人要跟你“清账”

刺头体育
2026-09-07 11:36:42
今年,没有金九银十了。。。

今年,没有金九银十了。。。

雷斯林
2026-09-07 12:20:06
5999元,华为刚推出的6.3英寸小阔屏,估计又要卖爆了

5999元,华为刚推出的6.3英寸小阔屏,估计又要卖爆了

刘奔跑
2026-09-07 20:49:29
打赏陪睡案女主播合租室友发声:魏莹每月陪睡一两次,枕头没干过,经常哭到缺氧

打赏陪睡案女主播合租室友发声:魏莹每月陪睡一两次,枕头没干过,经常哭到缺氧

世界圈
2026-08-24 20:54:42
打爆中国男篮!53分+9记三分!冲击NBA!有机会吗?

打爆中国男篮!53分+9记三分!冲击NBA!有机会吗?

篮球盛世
2026-09-08 11:22:56
极氪8X这价格让问界M8都沉默了

极氪8X这价格让问界M8都沉默了

直男评车说
2026-09-08 11:50:38
汤家凤呼吁取消英语,他这个“坏种”,竟然是南京大学博士

汤家凤呼吁取消英语,他这个“坏种”,竟然是南京大学博士

汉史趣闻
2026-09-06 10:13:22
29.99万,小米真做成了...

29.99万,小米真做成了...

放毒
2026-09-07 23:53:31
老板亏麻了!车库翻出30条前公司当垃圾处理内存:总价超7.1万元

老板亏麻了!车库翻出30条前公司当垃圾处理内存:总价超7.1万元

快科技
2026-09-07 16:58:17
美国法庭炸锅了!9月2号,被美军抓捕拘押在美国的马杜罗,他的律师团队抛出了一个惊人的逻辑死局,直接把美国法官都给搞懵了。

美国法庭炸锅了!9月2号,被美军抓捕拘押在美国的马杜罗,他的律师团队抛出了一个惊人的逻辑死局,直接把美国法官都给搞懵了。

回京历史梦
2026-09-06 20:35:03
神奇!郑钦文在美网3天2次上演奇迹 0-5落后连赢7局 打懵前世界第1

神奇!郑钦文在美网3天2次上演奇迹 0-5落后连赢7局 打懵前世界第1

我爱英超
2026-09-08 00:54:48
愤怒!中国博主在伦敦直播时,当众遭几个外籍青年殴打,报警后警方敷衍了事

愤怒!中国博主在伦敦直播时,当众遭几个外籍青年殴打,报警后警方敷衍了事

小徐讲八卦
2026-09-07 06:33:55
热搜上令人窒息的“母女吃牛肉面一幕”,精神穷人可怕的三观

热搜上令人窒息的“母女吃牛肉面一幕”,精神穷人可怕的三观

蝴蝶花雨话教育
2026-08-18 09:57:05
一岁孩子误吞铜丝,三家医院拒收,第四家医院进行全麻手术,妈妈提醒:娃这时期很危险,一定要看牢

一岁孩子误吞铜丝,三家医院拒收,第四家医院进行全麻手术,妈妈提醒:娃这时期很危险,一定要看牢

菁妈育儿
2026-09-08 12:13:34
2026-09-08 17:07:00
MediaTea
MediaTea
专业的数字媒体、新媒体技术
2146文章数 86关注度
往期回顾 全部

科技要闻

小米再次背水一战

头条要闻

外媒炒作中国"人形机器人参战" 称机器人部队即将成军

头条要闻

外媒炒作中国"人形机器人参战" 称机器人部队即将成军

体育要闻

韩旭:我一定会再次走出去

娱乐要闻

郭德纲被处罚,郭麒麟被曝恋情瓜

财经要闻

全球黄金“回家”

汽车要闻

领克20 领克的纯电小钢炮这次更运动了

态度原创

游戏
手机
时尚
本地
军事航空

外媒:别期待《湮灭之潮》是什么硬核魂类游戏

手机要闻

韩国iPhone转三星折叠手机用户中,Z8系列约为Z7系列2倍

秋冬穿对红黄橙,温暖又高级

本地新闻

宁波,中国制造的隐藏大佬

军事要闻

胡塞武装用自行生产的导弹袭击沙特军车

无障碍浏览 进入关怀版