python自学笔记14 NumPy 线性代数

在Numpy库中有专门的linalg 模块用来做线性代数相关的运算。

本文中线性代数的一般概念不会解释

拆解矩阵

鸢尾花数据矩阵结构如下(150 × 4):

取其中的行向量和列向量:

python 复制代码
# 导入包
import numpy as np
from sklearn.datasets import load_iris
# 从sklearn导入鸢尾花数据
iris = load_iris()
X = iris.data
# 提取四个行向量 (二维数组)
x_row_1 = X[[1 - 1], :]
x_row_2 = X[[2 - 1], :]
x_row_51 = X[[51 - 1], :]
x_row_101 = X[[101 - 1], :]

# 提取四个列向量 (二维数组)
x_col_1 = X[:, [0]]
x_col_2 = X[:, [1]]
x_col_3 = X[:, [2]]
x_col_4 = X[:, [3]]

向量运算

向量的模

python 复制代码
norm_x_row_1 = np.linalg.norm(x_row_1)
norm_x_row_2 = np.linalg.norm(x_row_2)
norm_x_row_51 = np.linalg.norm(x_row_51)
norm_x_row_101 = np.linalg.norm(x_row_101)

向量单位化

python 复制代码
unit_x_row_1 = x_row_1 / norm_x_row_1
unit_x_row_2 = x_row_2 / norm_x_row_2
unit_x_row_51 = x_row_51 / norm_x_row_51
unit_x_row_101 = x_row_101 / norm_x_row_101

向量内积

python 复制代码
inner_prod_x_row_1_2 = np.dot(x_row_1[0], x_row_2[0])
inner_prod_x_row_1_51 = np.dot(x_row_1[0], x_row_51[0])
inner_prod_x_row_1_101 = np.dot(x_row_1[0], x_row_101[0])

向量夹角

下面的代码先求内积是因为单位向量的内积就是余弦值

python 复制代码
# 计算单位向量内积
dot_product_1_51 = np.dot(unit_x_row_1[0],
						  unit_x_row_51[0])
# 将结果转化为弧度
angle_1_51 = np.arccos(dot_product_1_51)
# 将结果转化为角度
angle_1_51 = np.rad2deg(angle_1_51)

这里补充一个数学上的概念:

矩阵运算

矩阵乘法

python 复制代码
# 第一个格拉姆矩阵
G = X.T @ X
# 第二个格拉姆矩阵
H = X @ X.T

矩阵的逆

python 复制代码
# 计算格拉姆矩阵G的逆矩阵
a G_inv = np.linalg.inv(G)

几个常见矩阵分解

Cholesky 分解

python 复制代码
# 对格拉姆矩阵G进行Cholesky分解
a L = np.linalg.cholesky(G)

G是正定阵

特征值分解 EVD

python 复制代码
# 对格拉姆矩阵G进行特征值分解
Lambdas, V = np.linalg.eig(G)

Lambdas的对角线是特征值,V的每一列是特征向量

奇异值分解 SVD

python 复制代码
# 鸢尾花数据矩阵X奇异值分解
U,S,VT = np.linalg.svd(X, full_matrices = False)
相关推荐
@HNUSTer11 分钟前
基于 Visual Studio Code 配置 Python 开发环境详细教程
ide·vscode·python·csdn开发云
挨踢学霸34 分钟前
技术全面重构|MsgHelper 新版深度拆解:交互、视觉与逻辑的底层优化(二)
经验分享·笔记·微信·架构·自动化
tuotali202639 分钟前
天然气压缩机技术2026,高可靠性长周期运行与智能运维融合路径
运维·python
Ama_tor43 分钟前
Flask零基础进阶(中)
后端·python·flask
love530love44 分钟前
Windows 11 源码编译 vLLM 0.16 完全指南(RTX 3090 / CUDA 12.8 / PyTorch 2.7.1)
人工智能·pytorch·windows·python·深度学习·vllm·vs 2022
进击的小头1 小时前
第3篇:最优控制理论数学基础——矩阵与向量的导数
python·线性代数·机器学习·矩阵
浩瀚之水_csdn1 小时前
Flask 深度解析:从微内核到企业级架构
python·架构·flask
Calm5501 小时前
Python 编程入门实训 - 知识点总结
python
全栈开发圈1 小时前
新书速览|Seaborn科技绘图:基于Matplotlib的Python数据可视化
python·科技·matplotlib
OxyTheCrack1 小时前
【C++】简述Observer观察者设计模式附样例(C++实现)
开发语言·c++·笔记·设计模式