讲师中心 微信公众号
AI工具推荐 视频效率加速

Python如何快速求NumPy数组的逆矩阵_使用linalg.inv执行运算

梦芳姑娘_8821

梦芳姑娘_8821

发布时间:2026-03-24 12:11:49

|

1056人浏览过

|

来源于php中文网

原创

numpy.linalg.inv仅适用于方阵且满秩的矩阵;非方阵或奇异矩阵会报LinAlgError;应先检查shape和秩,优先用solve解方程,注意数据类型、维度及条件数影响。

python如何快速求numpy数组的逆矩阵_使用linalg.inv执行运算

为什么 numpy.linalg.inv 有时算不出结果,直接报错?

因为逆矩阵只对**方阵且满秩**的数组有效。只要 a 不是方阵(比如形状是 (3, 4)),或者虽然方阵但行列式为 0(比如两行完全相同),numpy.linalg.inv 就会抛出 LinAlgError: Singular matrix。

常见误用场景:拿归一化后的特征矩阵、PCA降维后的结果、或拼接出来的宽表直接去求逆——这些大概率不是可逆的。

  • 先用 a.shape[0] == a.shape[1] 检查是否为方阵
  • 再用 np.linalg.matrix_rank(a) == a.shape[0] 确认满秩(比算行列式更稳定)
  • 若只是想解线性方程 Ax = b,优先用 np.linalg.solve(A, b),它内部自动选最优算法,不显式求逆,更稳也更快

用 numpy.linalg.inv 前必须注意的三个参数细节

numpy.linalg.inv 本身没有可调参数,但它对输入极其敏感——类型、维度、精度都会影响结果是否可用。

python-code-analyz
python-code-analyz

专业Python代码分析与优化,支持语法检查、安全扫描、性能评估、复杂度分析及重构后优化代码生成。

下载
  • 输入必须是 float64 或 complex128;如果传入 int32 或 uint8,会静默转成浮点,但可能因精度丢失导致本该可逆的矩阵被判为奇异
  • 高维数组(如 shape 为 (5, 4, 4))会被当作“批量方阵”处理,返回同 batch size 的逆矩阵数组;但若 shape 是 (4, 4, 5),就会报错 —— 它只接受最后两个轴为方阵
  • 如果矩阵条件数极大(比如 > 1e15),即使没报错,inv 返回的结果也可能严重失真;此时应改用 np.linalg.pinv(伪逆)并设 rcond

和 scipy.linalg.inv 比,该选哪个?

功能几乎一致,但底层实现不同:scipy.linalg.inv 默认调用更现代的 LAPACK 例程,对某些病态矩阵鲁棒性略好,还支持更多选项(如 overwrite_a=True 节省内存)。

立即学习“Python免费学习笔记(深入)”;

  • 如果你已装了 scipy,且处理的是大型或临界条件矩阵,建议用 scipy.linalg.inv
  • 如果只是小规模教学或快速验证,numpy.linalg.inv 足够,且无额外依赖
  • 两者都不做自动缩放或预处理;若矩阵元素量级差异大(如同时含 1e-8 和 1e6),手动用 np.diag(1.0 / np.linalg.norm(a, axis=0)) @ a 做列归一化后再求逆,效果常更好

一个典型错误:用 inv 算 A @ B 的逆,却写成 inv(A) @ inv(B)

这是代数常见误解:inv(A @ B) 等于 inv(B) @ inv(A),顺序必须反过来。写反会导致结果完全错误,且不容易被数值误差掩盖。

  • 正确写法:np.linalg.inv(B) @ np.linalg.inv(A)(当 A、B 都可逆时)
  • 更安全的做法:直接算 np.linalg.inv(A @ B),避免中间步骤放大误差
  • 如果 A、B 是大型稀疏矩阵,别硬算逆——改用 scipy.sparse.linalg.splu 或迭代法
实际用的时候,最麻烦的往往不是怎么调函数,而是得反复确认:这矩阵真的该被求逆吗?有没有更直接的替代路径?比如最小二乘、SVD 分解、或者干脆换模型结构。

热门AI工具

更多
WorkBuddy

一款AI办公效率工具,主要用于腾讯云推出的AI原生桌面智能体工作台,适合需要提升相关任务效率的用户。

UpDream
UpDream Hot

一款AI视频创作工具,主要用于哔哩哔哩推出的自研AI视频创作工具,适合需要提升相关任务效率的用户。

Laper
Laper Hot

Laper是专为编剧、导演和制片人推出的 AI 原生剧本创作工具。

立刻MV
立刻MV Hot

立刻MV是一款AI文本写作工具,AI 音乐视频(MV)创作工具。

讯飞智作

讯飞智作是一款AI视频创作工具,AI文本配音工具,数字人课程、营销视频制作。

火山引擎

火山引擎是一款面向企业的云计算与AI服务平台。

AionClaw
AionClaw Hot

AionClaw是一款面向办公、创作和编程任务的AI桌面智能体。

DeepSeek

DeepSeek是一款面向对话、写作、编程和推理场景的AI大模型工具。

豆包大模型

豆包大模型是一款由字节跳动推出的企业级大语言模型服务平台。

相关专题

更多
python打包成可执行文件
python打包成可执行文件

本专题为大家带来python打包成可执行文件相关的文章,大家可以免费的下载体验。

1631

2023.07.20

python能做什么
python能做什么

python能做的有:可用于开发基于控制台的应用程序、多媒体部分开发、用于开发基于Web的应用程序、使用python处理数据、系统编程等等。本专题为大家提供python相关的各种文章、以及下载和课程。

4004

2023.07.25

format在python中的用法
format在python中的用法

Python中的format是一种字符串格式化方法,用于将变量或值插入到字符串中的占位符位置。通过format方法,我们可以动态地构建字符串,使其包含不同值。php中文网给大家带来了相关的教程以及文章,欢迎大家前来阅读学习。

1629

2023.07.31

python教程
python教程

Python已成为一门网红语言,即使是在非编程开发者当中,也掀起了一股学习的热潮。本专题为大家带来python教程的相关文章,大家可以免费体验学习。

23017

2023.08.03

python环境变量的配置
python环境变量的配置

Python是一种流行的编程语言,被广泛用于软件开发、数据分析和科学计算等领域。在安装Python之后,我们需要配置环境变量,以便在任何位置都能够访问Python的可执行文件。php中文网给大家带来了相关的教程以及文章,欢迎大家前来学习阅读。

2827

2023.08.04

python eval
python eval

eval函数是Python中一个非常强大的函数,它可以将字符串作为Python代码进行执行,实现动态编程的效果。然而,由于其潜在的安全风险和性能问题,需要谨慎使用。php中文网给大家带来了相关的教程以及文章,欢迎大家前来学习阅读。

2867

2023.08.04

scratch和python区别
scratch和python区别

scratch和python的区别:1、scratch是一种专为初学者设计的图形化编程语言,python是一种文本编程语言;2、scratch使用的是基于积木的编程语法,python采用更加传统的文本编程语法等等。本专题为大家提供scratch和python相关的文章、下载、课程内容,供大家免费下载体验。

1123

2023.08.11

python合并两个列表
python合并两个列表

Python是一种强大的编程语言,具有许多方便的功能和工具。在Python中,有多种方法可以合并两个列表。php中文网给大家带来了相关的教程以及文章,欢迎大家前来学习阅读。

596

2023.08.10

LLVM自定义Pass怎么写
LLVM自定义Pass怎么写

本专题聚焦LLVM自定义Pass开发,整理Pass类结构、run()方法、PreservedAnalyses、CMake构建、插件注册、-load-pass-plugin加载和测试用例编写流程。

20

2026.09.30

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn