Python中numpy.linalg.eig()计算矩阵特征值与特征向量详解

七月
七月
发布时间:2026-10-13| 2人浏览过
原创

本文介绍如何使用Python的numpy库中的linalg.eig函数计算矩阵的特征值与特征向量。通过导入模块及多个具体代码示例,演示了对角矩阵、复数矩阵及对称矩阵的特征值求解过程,并指出浮点精度对结果的影响,为PCA等算法提供基础支持。

numpy.linalg.eig函数基础与导入

在进行主成分分析(PCA)等数据处理任务时,经常需要获取矩阵的特征分解结果,此处对相关计算方法进行记录。

利用numpy库可以方便地计算矩阵的特征值及对应的特征向量,以下提供几个具体的代码示例供参考。

在调用相关功能前,需先单独导入numpy库中的linalg模块以使用线性代数函数。

特征值与特征向量计算示例


>>> from numpy import linalg as LA

>>> w, v = LA.eig(np.diag((1, 2, 3)))
>>> w; v
array([ 1., 2., 3.])
array([[ 1., 0., 0.],
    [ 0., 1., 0.],
    [ 0., 0., 1.]])

>>> w, v = LA.eig(np.array([[1, -1], [1, 1]]))
>>> w; v
array([ 1. + 1.j, 1. - 1.j])
array([[ 0.70710678+0.j    , 0.70710678+0.j    ],
    [ 0.00000000-0.70710678j, 0.00000000+0.70710678j]])

>>> a = np.array([[1, 1j], [-1j, 1]])
>>> w, v = LA.eig(a)
>>> w; v
array([ 2.00000000e+00+0.j,  5.98651912e-36+0.j]) # i.e., {2, 0}
array([[ 0.00000000+0.70710678j, 0.70710678+0.j    ],
    [ 0.70710678+0.j    , 0.00000000+0.70710678j]])

>>> a = np.array([[1 + 1e-9, 0], [0, 1 - 1e-9]])
>>> # Theor. e-values are 1 +/- 1e-9
>>> w, v = LA.eig(a)
>>> w; v
array([ 1., 1.])
array([[ 1., 0.],
    [ 0., 1.]])

如需查阅更详细的官方文档说明,可访问链接:http://docs.scipy.org/doc/numpy/reference/generated/numpy.linalg.eig.html

以上关于numpy.linalg.eig()计算矩阵特征向量与特征值的方法介绍完毕,希望能为相关开发者提供有效的参考与帮助。

相关标签:

免责声明:本文内容仅供参考,不代表本站观点。转载或引用请注明出处。

Python 相关产品和应用

全部下载
Selenium

Selenium

4.51.0 · Windows

用于浏览器自动化和 Web 测试的 Python 工具。

scikit-learn

scikit-learn

1.9.1 · Windows

常用 Python 机器学习算法与模型评估工具库。

Black

Black

26.10.1 · Windows

强调一致性的 Python 自动代码格式化工具。

Ruff

Ruff

0.17.1 · macOS

由 Rust 编写的高速 Python 代码检查和格式化工具。

pytest

pytest

9.1.1 · Windows

简洁而强大的 Python 自动化测试框架。

FastAPI

FastAPI

0.146.0 · Windows

高性能 Python API 框架,支持类型提示和自动接口文档。

Flask

Flask

3.1.3 · Windows

轻量灵活的 Python Web 应用框架。

Django

Django

6.1.2 · Windows

成熟的 Python Web 框架,适合构建内容站点和业务系统。

Spyder

Spyder

6.1.7 · Windows

面向科学计算与数据分析的 Python 集成开发环境。

SciPy

SciPy

1.18.1 · Windows

面向科学、工程和技术计算的 Python 算法库。