本文大纲1.什么是矩阵2.实际应用场景中的矩阵3.矩阵表示4.矩阵运算5.理解矩阵乘法1.什么是矩阵?m×n矩阵是m行n列元素的矩形阵列。这是一个包含6个数字元素的2行3列矩阵:矩阵属于称为线性代数的数学分支。线性代数是与向量空间和线性映射有关的数学分支。它包括对线、面和子空间的研究,以及所有向量空间的一般属性。从表面上看,排列成矩形的数字是一个矩阵。在实践中,矩阵是有限维线性空间中线性变换的表示。它表示空间到空间的映射。2.真实应用场景中的矩阵在程序中,利用矩阵来模拟真实数据,可以实现以下功能:二维图形变换、人脸变换、人脸识别、信息转换等。例如,一张图片,一张简单的黑白图片,只由黑白组成,是否可以用两个值为10的二维矩阵来表示呢?自然地,特别是在图像处理中,图像信息是二维矩阵数据。矩阵分析,是一种方便的计算工具,可以用简单的形式表达复杂的信息。3.矩阵表达式我们选择Python作为代码演示案例。使用NumPy库。什么是NumPy?NumPy是一个基本的科学计算包,包含:一个强大的N维数组对象复杂(广播)函数工具,用于在代码中集成C/C++和Fortran代码有用的线性代数、傅里叶变换和随机数生成函数,导入numpy函数。例如,1×2和2×2矩阵如下所示。调用shape方法获取矩阵的大小。同样,numpy方便了我们的许多操作。全0矩阵、全1矩阵、单位矩阵都可以直接创建。代码matrix_exp.py如下:#-*-coding:utf-8-*-#导入numpy函数,开始npimportnumpyasnpif__name__=='__main__':mat1=np.array([1,3])mat1=np.mat(mat1)#等价于np.mat([1,3]),mat函数将目标数据的类型转换成矩阵(matrix)printmat1#1row2matrix(也叫1*2矩阵)#==>[[13]]printmat2=np.array([[1,3],[3,4]])mat2=np.mat(mat2)printmat2#2*2矩阵#==>[[13]#==>[34]]#获取矩阵的大小printmat1.shapeprintmat2.shapeprintmat3=np.zeros((2,3))#2*3全0矩阵mat4=np.ones((3,2))#3*2全1矩阵mat5=np.identity(3)#3*3单位矩阵mat6=np.eye(3,3,0)#eye(N,M=None,k=0,dtype=float)diagonal行是一个矩阵,其中1其余为0,k指定对角线的位置printmat3printmat4printmat5printmat6右键,运行可以得到如下结果:[[13]][[13][34]](1,2)(2,2)[[0.0.0.][0.0.0.]][[1.1.][1.1.][1.1.]][[1.0.0.][0.1.0.][0.0.1.]][[1.0.0.][0.1.0.][0.0.1.]]上面的注释解释了t的使用他的方法很详细。“提示”代码分享在GitHub上:https://github.com/JeffLi1993/robot-mumu4.矩阵运算矩阵运算包括加减乘除转置矩阵逆矩阵行列式矩阵的幂伴随矩阵等矩阵的加减乘除规则如下:(同向量运算规则)-A=(-1)AA-B=A+(-B)2A+3B=(2A)+(3B)例如,下面显示了矩阵与矩阵相乘、矩阵求逆、矩阵转置以及对每一行或列求和的操作。代码matrix_op.py如下:#-*-coding:utf-8-*-#导入numpy函数,开头为npimportnumpyasnpif__name__=='__main__':#Matrixmultiplicationmat1=np.mat([1,3])mat2=np.mat([[3],[4]])mat3=mat1*mat2printmat3#1*2矩阵乘以2*1矩阵得到1*1矩阵#==>[[15]]print#matrixseekingInversemat4=np.mat([[1,0,1],[0,2,1],[1,1,1]])mat5=mat4.I#I对应getI(self),返回可逆矩阵Inverseprintmat5#Inverseofmatrix#==>[[-1.-1.2.]#==>[-1.0.1.]#==>[2.1.-2.]]print#转置矩阵mat6=np.mat([[1,1,1],[0,2,1],[1,1,1]])mat7=mat6.T#I对应getT(self),返回矩阵的转置矩阵printmat7#矩阵的转置矩阵#==>[[101]#==>[121]#==>[111]]print#矩阵sum1=mat6各列之和。sum(axis=0)printsum1#对矩阵的每一行求和sum2=mat6.sum(axis=1)printsum2#对矩阵的所有行和列求和sum3=sum(mat6[1,:])printsum3print#矩阵与数组的转换mat8=np.mat([[1,2,3]])arr1=np.array(mat8)#将矩阵转化为数组printarr1arr2=[1,2,3]mat9=np.mat(arr2)#将数组转化为矩阵printmat9右键,运行得到结果如下:[[15]][[-1.-1.2.][-1.0.1.][2.1.-2.]][[101][121][111]][[243]][[3][3][3]][[021]][[123]][[123]]五、理解矩阵和向量乘法可以从求解多元方程看【本文为专栏作者原创稿件》李强强》,转载请联系作者获得授权]点此阅读作者更多好文
