Python矩阵操作详解

liftword2个月前 (02-24)技术文章24

Python 处理矩阵的方式有很多,其中最常用的库是 NumPy,它提供了高效的矩阵运算和操作能力。此外,pandas、SciPy 和 TensorFlow 等库也支持矩阵运算。下面介绍一下矩阵操作的详细解析

1. 创建矩阵

使用 NumPy 创建矩阵

import numpy as np

# 1. 直接创建矩阵
A = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]])
print(A)

# 2. 创建零矩阵
zero_matrix = np.zeros((3, 3))
print(zero_matrix)

# 3. 创建全 1 矩阵
ones_matrix = np.ones((3, 3))
print(ones_matrix)

# 4. 创建单位矩阵(对角线为1)
identity_matrix = np.eye(3)
print(identity_matrix)

# 5. 创建随机矩阵
random_matrix = np.random.rand(3, 3)  # 生成 0-1 之间的随机数
print(random_matrix)

2. 矩阵基本操作

矩阵转置

A_T = A.T  # 交换行列
print(A_T)

矩阵加法、减法

B = np.array([[9, 8, 7], [6, 5, 4], [3, 2, 1]])

# 矩阵相加
C_add = A + B
print(C_add)

# 矩阵相减
C_sub = A - B
print(C_sub)

矩阵数乘

C_mul = A * 2  # 每个元素乘以2
print(C_mul)

矩阵点乘(矩阵乘法)

C_dot = np.dot(A, B)  # 矩阵乘法
print(C_dot)

# 或者使用 @ 符号(Python 3.5+)
C_dot2 = A @ B
print(C_dot2)

矩阵 Hadamard 乘积(逐元素相乘)

C_hadamard = A * B  # 对应元素相乘
print(C_hadamard)

3. 访问矩阵元素

索引和切片

# 访问单个元素 (从 0 开始索引)
print(A[1, 2])  # 访问第二行第三列的元素

# 访问某一行
print(A[1, :])  # 访问第二行的所有元素

# 访问某一列
print(A[:, 2])  # 访问第三列的所有元素

# 访问子矩阵
print(A[0:2, 1:3])  # 访问前两行和后两列的子矩阵

4. 矩阵的行列操作

添加行或列

# 添加一列
new_col = np.array([[10], [20], [30]])  # 3x1 列向量
A_new = np.hstack((A, new_col))  # 横向拼接
print(A_new)

# 添加一行
new_row = np.array([[10, 20, 30, 40]])  # 1x4 行向量
A_new2 = np.vstack((A_new, new_row))  # 纵向拼接
print(A_new2)

删除行或列

# 删除第1列(索引0)
A_del_col = np.delete(A, 0, axis=1)
print(A_del_col)

# 删除第2行(索引1)
A_del_row = np.delete(A, 1, axis=0)
print(A_del_row)

5. 矩阵求逆、行列式和特征值

矩阵求逆

A_inv = np.linalg.inv(A)
print(A_inv)

注意:只有 方阵(行数 = 列数)且行列式不为 0 的矩阵才可逆,否则会报错。

矩阵行列式

det_A = np.linalg.det(A)
print(det_A)

特征值和特征向量

eig_vals, eig_vecs = np.linalg.eig(A)
print("特征值:", eig_vals)
print("特征向量:\n", eig_vecs)

6. 矩阵分解

LU 分解

from scipy.linalg import lu

P, L, U = lu(A)
print("P 矩阵:\n", P)
print("L 矩阵:\n", L)
print("U 矩阵:\n", U)

QR 分解

Q, R = np.linalg.qr(A)
print("Q 矩阵:\n", Q)
print("R 矩阵:\n", R)

SVD(奇异值分解)

U, S, Vt = np.linalg.svd(A)
print("U 矩阵:\n", U)
print("S 值:\n", S)
print("V 矩阵:\n", Vt)

7. 矩阵应用

解线性方程组 Ax = b

b = np.array([1, 2, 3])  # 右端项
x = np.linalg.solve(A, b)
print("解 x:", x)

计算矩阵的范数

norm_A = np.linalg.norm(A)  # 计算矩阵的二范数
print(norm_A)

计算协方差矩阵

data = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]])
cov_matrix = np.cov(data)
print(cov_matrix)

相关文章

Numpy中常用的10个矩阵操作示例

数据科学和机器学习所需的数学知识中,约有30-40%来自线性代数。矩阵运算在线性代数中占有重要的地位。Numpy通常用于在Python中执行数值计算,并且对于矩阵操作做了特殊的优化。numpy通过向量...

巧用python的矩阵运算来进行电路的计算和分析

多元一次方程组早在初中时,我们就学习过多元一次方程组的求程。所谓多元一次组指的是含有有个未知数,并且含有未知数的项的次数都是1方程组。一个简单的例子:学校的篮球数比排球数的2倍多3个,足球数与排球数的...

仅用 10 行 Python 代码,搞定 10 种数学运算!

【CSDN 编者按】在如今这个 AI 飞速发展的时代,Python 以其简洁、易读的语法和强大的表现力,深受程序员和科学家的喜爱。本文将展示在仅仅 10 行代码内,Python 如何实现复杂的数学运算...

如何在 Python 中制作矩阵:详细指南

什么是矩阵?在深入研究之前,让我们了解一下矩阵是什么:它是一个按行和列排列的数字的矩形数组。在 Python 中,我们通常使用嵌套列表来表示矩阵,其中每个内部列表代表一行。使用列表创建基本矩阵让我们从...

进入Python的世界27-NumPy 库的介绍及学习方法

NumPy是多个高级库的基础,掌握深度学习之前,必须先学习这个库,让咱们一起开始学习了解一下这个库,形成自己的学习与知识体系。一 NumPy 主要框架内容1. ndarray对象ndarray(N-d...