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

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.

相关推荐
热点推荐
难以置信!加州一警察给华人按摩店当“保护伞”,竟获免费嫖娼

难以置信!加州一警察给华人按摩店当“保护伞”,竟获免费嫖娼

大洛杉矶LA
2026-09-18 06:32:12
我国第1位美女宇航员刘洋,为何如今不见人影了?原因让国人泪目

我国第1位美女宇航员刘洋,为何如今不见人影了?原因让国人泪目

真的好爱你
2026-09-20 00:23:32
73岁老板再谈移民问题,曼联穆斯林球迷会:请离开

73岁老板再谈移民问题,曼联穆斯林球迷会:请离开

绿茵狂热者
2026-09-20 01:01:22
7万亿砸向“六张网”,下一轮基建机会在哪

7万亿砸向“六张网”,下一轮基建机会在哪

吴晓波频道
2026-08-10 17:05:27
江西24岁女子病逝,未婚夫垫付30万治疗费!办完丧事准备离开,未来岳父递来一个红袋子:定情物+12万彩礼,一句话让他当场泪崩

江西24岁女子病逝,未婚夫垫付30万治疗费!办完丧事准备离开,未来岳父递来一个红袋子:定情物+12万彩礼,一句话让他当场泪崩

品读时刻
2026-09-19 09:08:37
“iPhoneDuo维修费8000”冲上热搜,苹果客服回应:目前官方iPhone维修查询链接没有更新新设备的价格,第三方发布的言论无法判断

“iPhoneDuo维修费8000”冲上热搜,苹果客服回应:目前官方iPhone维修查询链接没有更新新设备的价格,第三方发布的言论无法判断

台州交通广播
2026-09-18 12:03:50
我75岁,存款300多万,血的教训告诫我:再亲的亲人也要留个心眼

我75岁,存款300多万,血的教训告诫我:再亲的亲人也要留个心眼

千秋文化
2026-06-12 20:21:36
Netflix宣布公开电影票房:是看好院线生意,还是给好莱坞下套?

Netflix宣布公开电影票房:是看好院线生意,还是给好莱坞下套?

极客电影
2026-09-18 18:59:44
为什么说霸王龙体温研究颠覆了传统认知?

为什么说霸王龙体温研究颠覆了传统认知?

小眼睛小世界
2026-09-19 04:26:13
夫妻俩退休后跟朋友一起自驾游,最后一人独自回来:再也不去了

夫妻俩退休后跟朋友一起自驾游,最后一人独自回来:再也不去了

青青会讲故事
2025-01-11 14:12:36
一撩就上钩的女人,身体都具有三个特征,男人一定要知道!

一撩就上钩的女人,身体都具有三个特征,男人一定要知道!

周哥一影视
2026-09-20 02:35:10
斯诺克国锦赛资格赛28国手出战16人晋级,26位中国球员将现身南京

斯诺克国锦赛资格赛28国手出战16人晋级,26位中国球员将现身南京

天涯远行人
2026-09-20 01:40:03
一个不社交、不戴首饰、不化妆的中年女性,大多会有3种命运,别不信

一个不社交、不戴首饰、不化妆的中年女性,大多会有3种命运,别不信

十指说情
2026-09-14 10:02:13
曹可凡公开发文,出手揭开刘翔私下人品,其实孙海平早有爆料

曹可凡公开发文,出手揭开刘翔私下人品,其实孙海平早有爆料

凡知
2026-09-18 02:42:40
乌克兰军队成功渡河

乌克兰军队成功渡河

战争研究所
2026-09-17 23:41:14
这5种病一得,生命就进入倒计时?医生:千万别低估体检的重要性

这5种病一得,生命就进入倒计时?医生:千万别低估体检的重要性

健康科普365
2026-08-31 09:18:12
为什么法规越细美国政府效率反而越低?

为什么法规越细美国政府效率反而越低?

小眼睛小世界
2026-09-19 04:24:30
广西“孙子非亲生”案更新!老人患癌深感来日不多,直接表态:若是亲生的,钱全部归你;若不是亲生的,只要一元钱和一句道歉

广西“孙子非亲生”案更新!老人患癌深感来日不多,直接表态:若是亲生的,钱全部归你;若不是亲生的,只要一元钱和一句道歉

火山詩话
2026-09-18 17:54:10
50岁左右的职场阿姨,这样打扮既舒服又有正式感

50岁左右的职场阿姨,这样打扮既舒服又有正式感

美女穿搭分享
2026-09-18 16:37:38
我问老公,张馨予那么有钱,为什么买一辆15万的车?老公说,不是他们买不起,而是何捷不想让人说闲话。

我问老公,张馨予那么有钱,为什么买一辆15万的车?老公说,不是他们买不起,而是何捷不想让人说闲话。

可读
2026-09-17 22:43:34
2026-09-20 03:52:49
MediaTea
MediaTea
专业的数字媒体、新媒体技术
2186文章数 85关注度
往期回顾 全部

科技要闻

要走650亿,智谱的理想越来越贵

头条要闻

厨师被指在餐馆扎血测艾滋病 老板:有关部门已介入

头条要闻

厨师被指在餐馆扎血测艾滋病 老板:有关部门已介入

体育要闻

2026亚运会开幕式 胡明轩吴愉担任旗手

娱乐要闻

甜度爆表!许嵩冯禧晒婚纱照官宣结婚

财经要闻

江西首富破产:一张927万商票压垮千亿帝国

汽车要闻

大块头的从容 红旗G919如何兼顾豪华与越野能力

态度原创

手机
健康
房产
亲子
军事航空

手机要闻

iPhone 18 Pro 1TB版本使用QLC闪存引发争议:加价数千元却买到降级配置

脑动脉瘤的治疗方法,该选哪一种?

房产要闻

海口房价,降不动了!

亲子要闻

从“世界高品质”到“透明真安心”,好奇诠释48年品质坚守

军事要闻

特朗普再称对伊朗战争将很快结束

无障碍浏览 进入关怀版