📅  最后修改于: 2023-12-03 14:44:49.059000             🧑  作者: Mango
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的线性代数运算很便捷,有助于进行数据分析和科学计算。