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

NumPy 函数手册:线性代数

0
分享至

在线性代数、科学计算以及机器学习中,经常需要进行矩阵乘法、求解线性方程组、矩阵分解以及向量与矩阵范数计算等操作。NumPy 提供了一组线性代数函数,主要集中在 numpy.linalg 模块中,用于完成这些运算。

这些函数采用高度向量化实现,并调用底层高性能数学库(如 BLAS 与 LAPACK),能够高效处理向量与矩阵计算任务。

按照功能划分,NumPy 中常用的线性代数函数通常可以分为以下几类:

(1)矩阵与向量乘法及幂运算

(2)矩阵分解

(3)线性方程组求解

(4)矩阵特征值与特征向量

(5)矩阵范数与条件数

(6)矩阵逆与伪逆

(7)矩阵行列式与秩

一、矩阵与向量乘法及幂运算

matmul()

用于执行矩阵乘法运算(Matrix Multiplication)。与 Python 的 @ 运算符等价。

numpy.matmul(a, b)

参数说明:

• a:输入数组或矩阵

• b:输入数组或矩阵

函数行为说明:

当输入为高维数组时,matmul() 会对最后两个维度执行矩阵乘法,其余维度作为批处理维度。

示例:

#  [43 50]]

等价写法:

A @ B

dot()

计算向量点积或矩阵乘法(Dot Product)。

numpy.dot(a, b)

函数行为说明:

• 对一维数组执行向量点积

• 对二维数组执行矩阵乘法

• 对更高维数组按照最后一维与倒数第二维进行乘法运算

参数说明:

• a:输入数组或矩阵

• b:输入数组或矩阵

示例 1:向量点积

# 32

解释:

1×4 + 2×5 + 3×6 = 32

示例 2:矩阵乘法

#  [43 50]]

在二维矩阵场景下,dot() 与 matmul() 的结果通常一致;但在更高维数组上,两者的广播与乘法语义并不完全相同,实际使用中通常更推荐使用 matmul() 或 @ 表达矩阵乘法。

multi_dot()

计算多个矩阵的连乘,并自动选择较优的乘法顺序。

numpy.linalg.multi_dot(arrays)

参数说明:

• arrays:由多个数组组成的序列

示例:

#  [143]]

该运算等价于:

(A @ B) @ C

multi_dot() 会自动选择更高效的矩阵乘法顺序,特别适用于多个矩阵连乘的场景。

matrix_power()

计算方阵的整数次幂(Matrix Power)。

numpy.linalg.matrix_power(a, n)

参数说明:

• a:输入方阵

• n:整数幂,可以为正整数、负整数或 0

返回:

a 的 n 次幂,结果形状与原矩阵相同。

函数行为说明:

• 当 n > 0 时,计算 a 的正整数次幂

• 当 n = 0 时,返回与 a 同形状的单位矩阵

• 当 n < 0 时,先计算 a 的逆矩阵,再求其 |n| 次幂

• 若 a 不是方阵,或 n < 0 且矩阵不可逆,则会报错

示例 1:

#  [15 22]]

示例 2:

#  [0 1]]

示例 3:

# 等价于 np.linalg.inv(A)

matrix_power() 适用于状态转移矩阵、递推关系、图路径计数等问题。它计算的是矩阵乘法意义下的幂,不是元素逐个求幂;若需要逐元素幂运算,应使用 ** 或 np.power()。

二、矩阵分解

svd()

奇异值分解(Singular Value Decomposition)。

完整形式:

numpy.linalg.svd(a, full_matrices=True, compute_uv=True)

常用形式:

numpy.linalg.svd(a)

参数说明:

• a:输入矩阵

返回:

U, S, Vt

其中:

• U:左奇异向量矩阵

• S:奇异值数组

• Vt:右奇异向量矩阵的转置

示例:

U, S, Vt = np.linalg.svd(A)

奇异值分解广泛应用于:

• 主成分分析(PCA)

• 降维

• 矩阵近似

svdvals()

计算矩阵的奇异值,但不返回奇异向量。

numpy.linalg.svdvals(a)

参数说明:

• a:输入矩阵

示例:

np.linalg.svdvals(A)

若只需要奇异值而不需要奇异向量,可直接使用该函数。

qr()

QR 分解。

numpy.linalg.qr(a)

参数说明:

• a:输入矩阵

返回:

Q, R

其中:

• Q:正交矩阵

• R:上三角矩阵

示例:

Q, R = np.linalg.qr(A)

QR 分解常用于最小二乘问题以及数值稳定的线性方程求解。

cholesky()

Cholesky 分解。

numpy.linalg.cholesky(a)

参数说明:

• a:输入方阵,必须是对称正定矩阵

返回:

L

满足:

A = L @ L.T

示例:

L = np.linalg.cholesky(A)

Cholesky 分解常用于:

• 协方差矩阵分解

• 数值优化

• 高效求解线性方程组

三、线性方程组求解

solve()

用于求解满秩方阵对应的线性方程组。若系数矩阵奇异或不是方阵,应考虑 lstsq() 等方法。

numpy.linalg.solve(a, b)

参数说明:

• a:系数矩阵

• b:常数向量

求解:

Ax = b

示例:

# [2. 3.]

结果即为:

y = 3

lstsq()

最小二乘解(Least Squares Solution)。

numpy.linalg.lstsq(a, b, rcond=None)

参数说明:

• a:系数矩阵

• b:目标向量

• rcond:截断阈值

示例:

x, residuals, rank, s = np.linalg.lstsq(A, b, rcond=None)

最小二乘法常用于:

• 线性回归

• 数据拟合

四、矩阵特征值与特征向量

eig()

计算矩阵特征值与特征向量。

numpy.linalg.eig(a)

参数说明:

• a:方阵

返回:

w, v

其中:

• w:特征值

• v:特征向量

示例:

# [2. 3.]

特征值分解常用于:

• PCA

• 动态系统分析

• 马尔可夫链

eigh()

计算实对称矩阵或 Hermitian 矩阵的特征值与特征向量。

numpy.linalg.eigh(a)

参数说明:

• a:实对称矩阵或 Hermitian 矩阵

返回:

w, v

其中:

• w:特征值

• v:特征向量

eigh() 专门用于实对称矩阵或 Hermitian 矩阵,通常比 eig() 更适合这类问题,数值上也更稳定。常用于:

• 协方差矩阵分析

• 主成分分析(PCA)

eigvals()

计算矩阵特征值,但不返回特征向量。

numpy.linalg.eigvals(a)

参数说明:

• a:输入方阵

示例:

# [2. 3.]

eigvals() 返回一般方阵的特征值,不返回特征向量。结果通常不保证排序;对于实矩阵,特征值也可能为复数。

eigvalsh()

计算实对称矩阵或 Hermitian 矩阵的特征值,但不返回特征向量。

numpy.linalg.eigvalsh(a, UPLO='L')

参数说明:

• a:实对称矩阵或 Hermitian 矩阵

• UPLO:指定使用矩阵的哪一部分参与计算

- 'U':使用上三角部分

返回:

按升序排列的特征值数组。

示例:

# array([1., 3.])

eigvalsh() 与 eigh() 类似,适用于实对称矩阵或复 Hermitian 矩阵。二者的区别在于:

• eigh():返回特征值和特征向量

• eigvalsh():只返回特征值

因此,当只关心特征值而不需要特征向量时,eigvalsh() 更直接,也更节省计算开销。

五、矩阵范数与条件数

norm()

计算向量或矩阵范数(Norm)。

numpy.linalg.norm(x, ord=None, axis=None, keepdims=False)

参数说明:

• x:输入向量或矩阵

• ord:范数类型。ord 的具体含义取决于输入对象(向量或矩阵)

对于矩阵,ord=None 时通常对应默认矩阵范数;ord 的具体解释应结合输入维度理解

• axis:指定沿哪个轴计算范数

• keepdims:是否保留被约简的维度

示例:

# 5.0

这里计算的是向量长度(欧几里得范数): 。

cond()

计算矩阵条件数(Condition Number)。默认计算基于 2-范数的条件数。

numpy.linalg.cond(x, p=None)

参数说明:

• x:输入矩阵

• p:范数类型,默认使用 2-范数条件数

示例:

np.linalg.cond(A)

条件数用于衡量矩阵的数值稳定性:条件数越大,数值误差越容易放大。

六、矩阵逆与伪逆

inv()

计算矩阵的逆矩阵。

numpy.linalg.inv(a)

参数说明:

• a:方阵

示例:

np.linalg.inv(A)

输入必须是方阵,且该方阵可逆;否则会引发线性代数错误。

在数值计算中,若目的是求解线性方程组,通常优先使用 solve(),而不是先求逆再相乘。

pinv()

计算矩阵的伪逆(Moore-Penrose Pseudoinverse)。

numpy.linalg.pinv(a)

参数说明:

• a:输入矩阵

示例:

np.linalg.pinv(A)

伪逆常用于:

• 不可逆矩阵

• 线性回归

• 最小二乘问题

七、矩阵行列式与秩

det()

计算矩阵行列式(Determinant)。

numpy.linalg.det(a)

参数说明:

• a:方阵

示例:

# -2.0

行列式为 0 表示矩阵不可逆。

matrix_rank()

计算矩阵秩(Matrix Rank)。

numpy.linalg.matrix_rank(a)

参数说明:

• a:输入矩阵

示例:

# 1

矩阵秩表示矩阵中线性无关行(或列)的数量。

slogdet()

以更稳定的方式计算矩阵行列式的符号与对数绝对值。

numpy.linalg.slogdet(a)

参数说明:

• a:输入方阵

返回:

• sign:行列式的符号

• logabsdet:行列式绝对值的自然对数,即 log(abs(det(a)))

示例:

print(logabsdet)  # 约 0.693147...

因为 det(A) = -2,所以其符号 sign = -1;又因为 abs(det(A)) = 2,故 logabsdet = log(2) ≈ 0.693147。

补充说明:

slogdet() 适合处理行列式绝对值很大或很小的矩阵。与直接计算 det() 相比,它在数值上更稳定,更不容易因为浮点数范围限制而产生上溢或下溢。若需要恢复原行列式,可利用:

det = sign * np.exp(logabsdet)

当矩阵行列式为 0 时,返回结果中 sign 为 0,logabsdet 为 -inf。

对复数矩阵,sign 可能是模长为 1 的复数,而不只是 -1、0、1。

小结

NumPy 在 numpy.linalg 模块中提供了一组用于线性代数计算的函数体系,包括矩阵与向量乘法及幂运算(matmul、dot、multi_dot、matrix_power)、矩阵分解(svd、qr、cholesky)、线性方程组求解(solve、lstsq)、特征值与特征向量计算(eig、eigh、eigvals、eigvalsh),以及范数、条件数、逆矩阵、伪逆、行列式、对数行列式和矩阵秩等分析工具。这些函数广泛应用于科学计算、机器学习、信号处理与数值优化等领域。

点赞有美意,赞赏是鼓励

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

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-04-05 22:08:18
伊朗媒体称多名美军士兵在营救飞行员的行动中身亡,美军试图摧毁被击落飞机的残骸,甚至摧毁身亡美军士兵的遗体

伊朗媒体称多名美军士兵在营救飞行员的行动中身亡,美军试图摧毁被击落飞机的残骸,甚至摧毁身亡美军士兵的遗体

大象新闻
2026-04-05 19:45:03
英法德都没想到,“不起眼”的匈牙利,如今已成全球“香饽饽”!

英法德都没想到,“不起眼”的匈牙利,如今已成全球“香饽饽”!

几人尽弃
2026-04-05 07:41:24
赵心童3连鞭5杆50+,8-3横扫特鲁姆普夺冠

赵心童3连鞭5杆50+,8-3横扫特鲁姆普夺冠

阿薎美食
2026-04-06 03:39:10
第95波打击!美国命门被炸,特朗普:快停火!中方已回应伊朗求援

第95波打击!美国命门被炸,特朗普:快停火!中方已回应伊朗求援

Ck的蜜糖
2026-04-05 16:56:27
独一档,本赛季单场1球、双响、戴帽数五大联赛球员凯恩均第1

独一档,本赛季单场1球、双响、戴帽数五大联赛球员凯恩均第1

懂球帝
2026-04-06 03:33:07
许家印,在恒大王国里,过足了官瘾、钱瘾、色瘾,金蝉脱壳玩死了

许家印,在恒大王国里,过足了官瘾、钱瘾、色瘾,金蝉脱壳玩死了

历史伟人录
2026-04-01 17:55:34
家长注意了!这些全是“假牛奶”!别再整箱往家搬了!花钱还坑娃

家长注意了!这些全是“假牛奶”!别再整箱往家搬了!花钱还坑娃

观察鉴娱
2026-03-21 12:39:12
没想到!中国给加纳援建的1000口井,竟成50万当地人的“救命药”

没想到!中国给加纳援建的1000口井,竟成50万当地人的“救命药”

老范谈史
2026-04-05 05:19:04
粉饰AI论调荒谬,莫忽视科技危机

粉饰AI论调荒谬,莫忽视科技危机

烽火瞭望者
2026-04-05 11:38:22
斯诺克战报!赵心童首局被罚12分赢球,清红定乾坤,小特出师不利

斯诺克战报!赵心童首局被罚12分赢球,清红定乾坤,小特出师不利

刘姚尧的文字城堡
2026-04-05 20:38:48
我爸嫌年夜饭饺子咸,摔了碗,第二年年三十,妻子带着女儿回娘家

我爸嫌年夜饭饺子咸,摔了碗,第二年年三十,妻子带着女儿回娘家

刺头体育
2026-04-05 15:38:14
陕西将迎新一轮大范围降水!7日起,小雨、局地中到大雨,最新预报→

陕西将迎新一轮大范围降水!7日起,小雨、局地中到大雨,最新预报→

大风新闻
2026-04-05 21:00:07
鲜花寄哀思!清明前夕民众缅怀吴石将军,故居留言墙满是期盼“台湾回归,祖国统一”

鲜花寄哀思!清明前夕民众缅怀吴石将军,故居留言墙满是期盼“台湾回归,祖国统一”

极目新闻
2026-04-04 22:52:18
张本智和怒斥:我是自愿退出中国籍加入日本的,凭啥让我滚出中国

张本智和怒斥:我是自愿退出中国籍加入日本的,凭啥让我滚出中国

拳击时空
2026-04-05 07:14:03
章含之的前夫洪君彦有多帅?1950 年 18 岁的他在大学留影,气质出众

章含之的前夫洪君彦有多帅?1950 年 18 岁的他在大学留影,气质出众

小影的娱乐
2026-02-22 04:13:32
日本恐将闯下大祸?刚放行3艘油船,一伊朗人就在日本被活活打死

日本恐将闯下大祸?刚放行3艘油船,一伊朗人就在日本被活活打死

有你的星空
2026-04-05 23:19:24
祝贺!35岁数学家王虹,获得最高荣誉

祝贺!35岁数学家王虹,获得最高荣誉

双一流高校
2026-04-06 00:09:39
张柏芝英歌舞首秀杀疯了!粉色战袍刚柔并济,这才是顶流有的底气

张柏芝英歌舞首秀杀疯了!粉色战袍刚柔并济,这才是顶流有的底气

橙星文娱
2026-04-05 11:20:03
理发店陷入倒闭潮,不是没客人,也不是电商冲击,是被自己弄垮了

理发店陷入倒闭潮,不是没客人,也不是电商冲击,是被自己弄垮了

平说财经
2026-04-04 22:52:59
2026-04-06 04:55:00
MediaTea
MediaTea
专业的数字媒体、新媒体技术
1826文章数 80关注度
往期回顾 全部

科技要闻

花200薅5千算力,Claude冷血断供“龙虾”

头条要闻

伊朗官员提开放霍尔木兹海峡条件

头条要闻

伊朗官员提开放霍尔木兹海峡条件

体育要闻

CBA最老球员,身价7500万美元

娱乐要闻

王灿兮否认婆媳不和 晒与杜淳妈合影

财经要闻

谁造出了优思益这头“怪物”?

汽车要闻

家用SUV没驾驶乐趣?极氪8X第一个不同意

态度原创

亲子
数码
房产
公开课
军事航空

亲子要闻

小英自曝给女儿剪短发原因!怕头发抢营养长不高,想剃光头太真实

数码要闻

大胆复古美学,海盗船推出原子紫配色K65 PLUS WIRELESS机械键盘

房产要闻

小阳春全面启动!现房,才是这波行情里最稳的上车票

公开课

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

军事要闻

美飞行员获救细节:美伊发生激烈交火 至少4死1伤

无障碍浏览 进入关怀版