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

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.

相关推荐
热点推荐
哈马斯的地道到底谁修的?挖到最深处,答案让所有人后背发凉

哈马斯的地道到底谁修的?挖到最深处,答案让所有人后背发凉

民间胡扯老哥
2026-09-08 06:45:58
前脚郭德纲被处罚,后脚郭麒麟被曝恋情瓜,这个时间点耐人寻味

前脚郭德纲被处罚,后脚郭麒麟被曝恋情瓜,这个时间点耐人寻味

喜欢历史的阿繁
2026-09-08 15:05:49
伟大的2-0爆冷!郑钦文一战创历史,赢麻了:排名飙升+狂揽523万

伟大的2-0爆冷!郑钦文一战创历史,赢麻了:排名飙升+狂揽523万

大秦壁虎白话体育
2026-09-08 02:24:44
愚蠢!上海男子在赴美航班上挥拳动手,导致刚下飞机全家就被遣返,网友:一拳打没全家签证!

愚蠢!上海男子在赴美航班上挥拳动手,导致刚下飞机全家就被遣返,网友:一拳打没全家签证!

行者聊官
2026-09-08 08:42:51
德国选择党领袖公开发声:德国实际上已经破产了,法国也快玩完了,谁来收拾欧盟这个烂摊子?

德国选择党领袖公开发声:德国实际上已经破产了,法国也快玩完了,谁来收拾欧盟这个烂摊子?

极目新闻
2026-09-08 09:05:24
中国女篮VS波多黎各,开球时间确定,宫鲁鸣纠错,张子宇重新定位

中国女篮VS波多黎各,开球时间确定,宫鲁鸣纠错,张子宇重新定位

体育大学僧
2026-09-08 11:04:36
中国女篮如果战胜波多黎各,进入世界杯八强,将会收获5大利好

中国女篮如果战胜波多黎各,进入世界杯八强,将会收获5大利好

宝哥精彩赛事
2026-09-08 08:59:23
105比64狂胜41分!中国女篮懵了美国也懵了:意大利被捷克坑惨了?

105比64狂胜41分!中国女篮懵了美国也懵了:意大利被捷克坑惨了?

篮球快餐车
2026-09-08 08:59:03
上海赛车事件跟踪!现场安保图片流出,这些大叔、大娘年纪大,看样子都给人感觉腿脚不利索,跑都跑不快

上海赛车事件跟踪!现场安保图片流出,这些大叔、大娘年纪大,看样子都给人感觉腿脚不利索,跑都跑不快

火山詩话
2026-09-08 08:00:34
特斯拉时隔19个月再降价,消费者还是买账了

特斯拉时隔19个月再降价,消费者还是买账了

界面新闻
2026-09-07 20:15:59
人民日报很火的一张漫画,足以抚平你当下所有的不顺

人民日报很火的一张漫画,足以抚平你当下所有的不顺

洞见
2026-09-08 10:00:07
果然调查|南阳“老头乐”退场引出全国性难题:能产能卖为什么不能开?

果然调查|南阳“老头乐”退场引出全国性难题:能产能卖为什么不能开?

齐鲁壹点
2026-09-07 11:32:26
“停捐后遭催捐”单亲妈妈最新发声:没造谣,已配合公安机关核实;联合国儿童基金会否认系涉事机构

“停捐后遭催捐”单亲妈妈最新发声:没造谣,已配合公安机关核实;联合国儿童基金会否认系涉事机构

都市快报橙柿互动
2026-09-08 13:29:54
美网|0比5落后再翻盘已成标配剧情,郑钦文昂首杀入女单八强

美网|0比5落后再翻盘已成标配剧情,郑钦文昂首杀入女单八强

上观新闻
2026-09-08 03:45:34
普京“3天停火令”刚到期 俄罗斯恢复对基辅打击

普京“3天停火令”刚到期 俄罗斯恢复对基辅打击

看看新闻Knews
2026-09-08 10:31:20
具身开始拼落地:首家集齐「6 颗商业化宝石」的公司出现了

具身开始拼落地:首家集齐「6 颗商业化宝石」的公司出现了

智东西
2026-09-08 00:18:51
刘朝瑞被查,我想起当年采访他的几个细节!

刘朝瑞被查,我想起当年采访他的几个细节!

李万卿
2026-09-08 00:30:05
长沙“摸臀案”变罗生门!4岁男孩碰了女生屁股,3次调解未果,双方要对簿公堂,网友调侃:坚决判决4岁男人猥亵

长沙“摸臀案”变罗生门!4岁男孩碰了女生屁股,3次调解未果,双方要对簿公堂,网友调侃:坚决判决4岁男人猥亵

火山詩话
2026-09-08 11:37:49
吴宣仪是不是把衣服穿反了?

吴宣仪是不是把衣服穿反了?

乡野小珥
2026-09-08 13:19:40
印度本周将举行金砖峰会,中方会派谁参加,中方回应:中国重视金砖合作,支持印度成功举办今年的领导人会晤

印度本周将举行金砖峰会,中方会派谁参加,中方回应:中国重视金砖合作,支持印度成功举办今年的领导人会晤

政知新媒体
2026-09-08 15:22:18
2026-09-08 15:59:00
MediaTea
MediaTea
专业的数字媒体、新媒体技术
2146文章数 86关注度
往期回顾 全部

科技要闻

小米再次背水一战

头条要闻

"粥饼伦"新店开业推出8元套餐现场排起长队 本人回应

头条要闻

"粥饼伦"新店开业推出8元套餐现场排起长队 本人回应

体育要闻

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

娱乐要闻

郭德纲乱改抗战歌曲被重罚!

财经要闻

全球黄金“回家”

汽车要闻

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

态度原创

教育
本地
游戏
亲子
公开课

教育要闻

院士李培根教授走进华师一附中讲授“开学第一课”

本地新闻

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

《湮灭之潮》科隆试玩口碑大爆!外媒:战斗系统太顶

亲子要闻

龙凤胎姐姐带娃的一天,这一天天的可给我忙坏了

公开课

李玫瑾:为什么性格比能力更重要?

无障碍浏览 进入关怀版