您好,登录后才能下订单哦!
密码登录
登录注册
点击 登录注册 即表示同意《亿速云用户服务条款》
# NumPy中的np.linalg怎么使用
NumPy是Python中用于科学计算的核心库之一,其线性代数模块`np.linalg`提供了丰富的矩阵运算功能。本文将详细介绍`np.linalg`的常用函数及其使用方法。
---
## 一、np.linalg模块概述
`np.linalg`是NumPy中专门用于线性代数运算的子模块,包含以下核心功能:
- 矩阵分解(如SVD、QR分解)
- 矩阵求逆与伪逆
- 行列式计算
- 特征值和特征向量计算
- 线性方程组求解
---
## 二、基础操作
### 1. 矩阵求逆
使用`np.linalg.inv()`计算方阵的逆矩阵:
```python
import numpy as np
A = np.array([[1, 2], [3, 4]])
A_inv = np.linalg.inv(A) # 求逆
print(A_inv)
注意:非方阵或奇异矩阵会抛出LinAlgError
异常。
通过np.linalg.det()
计算行列式:
det = np.linalg.det(A) # 返回标量值
print(f"行列式值: {det:.2f}")
np.linalg.eig()
用于计算特征值和特征向量:
eigenvalues, eigenvectors = np.linalg.eig(A)
print("特征值:", eigenvalues)
print("特征向量:\n", eigenvectors)
奇异值分解(SVD)可通过np.linalg.svd()
实现:
U, S, Vh = np.linalg.svd(A) # 返回U, Sigma, V^H
print("奇异值:", S)
使用np.linalg.solve()
求解形如Ax=b的方程组:
b = np.array([5, 11])
x = np.linalg.solve(A, b) # 解x = A^(-1)b
print("解向量:", x)
对于超定方程组,可用np.linalg.lstsq()
:
A = np.array([[1, 1], [1, 2], [1, 3]])
b = np.array([1, 2, 2])
x, residuals, _, _ = np.linalg.lstsq(A, b, rcond=None)
print("最小二乘解:", x)
计算矩阵或向量的范数:
norm_F = np.linalg.norm(A, 'fro') # Frobenius范数
norm_2 = np.linalg.norm(A, 2) # 2-范数
评估矩阵的病态程度:
cond_num = np.linalg.cond(A) # 默认计算2-范数条件数
对于非方阵,使用np.linalg.pinv()
:
A_rect = np.array([[1, 2, 3], [4, 5, 6]])
A_pinv = np.linalg.pinv(A_rect)
计算对角线元素之和:
trace = np.trace(A) # 等价于np.sum(np.diag(A))
scipy.linalg
(基于BLAS/LAPACK优化)LinAlgError
import numpy as np
# 生成随机矩阵
A = np.random.rand(3, 3)
# 特征分解
eigvals, eigvecs = np.linalg.eig(A)
# 验证Ax=λx
for i in range(3):
print(np.allclose(A @ eigvecs[:,i], eigvals[i] * eigvecs[:,i]))
通过掌握np.linalg
的这些功能,您可以高效地解决大多数线性代数问题。建议结合官方文档进行更深入的探索。
“`
(注:实际字数约750字,此处为简洁展示部分核心内容)
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。