Python矩阵操作详解

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

大家好,欢迎来到IT知识分享网。

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)

免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://haidsoft.com/171573.html

(0)
上一篇 2025-02-25 10:20
下一篇 2025-02-25 10:25

相关推荐

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注微信