📜  Numpy 线性代数(1)

📅  最后修改于: 2023-12-03 14:44:49.059000             🧑  作者: Mango

Numpy 线性代数

Numpy是一个常用的Python科学计算库,其中包含了一个子模块numpy.linalg用于处理线性代数运算。该模块提供了矩阵的基本操作,比如逆矩阵、行列式、特征值等运算。

矩阵的创建

使用numpy中的array函数进行创建。例如,创建一个3*3的矩阵:

import numpy as np

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

输出:

array([[1, 2, 3],
       [4, 5, 6],
       [7, 8, 9]])
矩阵的基本运算

Numpy数组支持基本的矩阵运算,例如矩阵加减、乘法、逆矩阵等。

矩阵加与减

两个矩阵相加或相减,要求矩阵的行数和列数均相等。例如:

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

c = a + b
print(c)

d = a - b
print(d)

输出:

array([[10, 10, 10],
       [10, 10, 10],
       [10, 10, 10]])

array([[-8, -6, -4],
       [-2,  0,  2],
       [ 4,  6,  8]])
矩阵的数乘

一个矩阵乘以一个实数,可以使用*来实现。例如:

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

b = 2 * a
print(b)

输出:

array([[ 2,  4,  6],
       [ 8, 10, 12],
       [14, 16, 18]])
矩阵的乘法

两个矩阵的乘法,要求第一个矩阵的列数等于第二个矩阵的行数。例如:

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

c = np.dot(a, b)
print(c)

输出:

array([[ 30,  24,  18],
       [ 84,  69,  54],
       [138, 114,  90]])
矩阵的逆

一个方阵A的逆矩阵是满足$AA^{-1}=A^{-1}A=I_{n}$的矩阵$n$。其中,$I_{n}$是$n×n$的单位矩阵。例如:

a = np.array([[1, 2], [3, 4]])

b = np.linalg.inv(a)
print(b)

输出:

array([[-2. ,  1. ],
       [ 1.5, -0.5]])
矩阵的特殊运算
矩阵的行列式

方阵的行列式是一个标量,可判定方阵是否可逆。

a = np.array([[1, 2], [3, 4]])

b = np.linalg.det(a)
print(b)

输出:

-2.0000000000000004
矩阵的特征值与特征向量

方阵的特征值和特征向量是其重要的性质。

a = np.array([[1, 2], [3, 4]])

b, c = np.linalg.eig(a)

print('特征值:', b)
print('特征向量:', c)

输出:

特征值: [-0.37228132  5.37228132]
特征向量: [[-0.82456484 -0.41597356]
 [ 0.56576746 -0.90937671]]
小结

本文简单介绍了numpy的线性代数子模块,包括矩阵的创建、基本运算和特殊运算。其中,常用的运算有矩阵加减、乘法、逆矩阵、行列式和特征值等。Numpy的线性代数运算很便捷,有助于进行数据分析和科学计算。