您好,登录后才能下订单哦!
密码登录
            
            
            
            
        登录注册
            
            
            
        点击 登录注册 即表示同意《亿速云用户服务条款》
        # 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优化)LinAlgErrorimport 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进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。