【每天几分钟,从零入门python编程的世界!】
关于numpy中数组的相乘,我们学习了对位相乘(用numpy.multiply、或*直接相乘,比如数组a和b的对位相乘就是numpy.multiply(a,b)或a*b)和一维数组的点乘(dot product,也有人叫inner product,比如一维数组a和b的点乘就是a.b)。
numpy中的点乘就是numpy.dot。对于二维以上的数组的点乘,就会用到矩阵相乘。
对于矩阵相乘,我们直接推导最一般最基本的情况,就是ndarray(我们可以把它理解为n维的数组)和mdarray(我们可以把它理解为m维的数组)这两个数组进行相乘。所以我们必须要接触matrix(矩阵)的一些概念,我们可以把matrix看做是一种非常有用的数据储存的结构。在后面的物理、Fintech(科技金融)、图像识别、机器学习等方面,都可以用到矩阵。
因此矩阵的数学原理也是非常重要的,感兴趣的话可以去看看。现在我们只做一些最简单的演示,如果现在对矩阵了解的不是很深入也没关系,也没有必要在现在的阶段花很大精力去学习,我们后面的学习中会不断的去重复和推演。现在先掌握最基础的东西,然后在numpy中知道怎么用矩阵相乘的方法去计算就可以了。
matrix multiplication(矩阵相乘)就是两个矩阵形式结构的数据进行运算的方法。同时因为矩阵在空间上是有它的意义的,所以矩阵运算是一个很精妙的东西。
numpy.dot的计算方法有很多,相当于当两个数组进行点乘的时候,它在内部对这两个数组做了一个判断,它会根据这两个数组的不同维度结构,采用不同的计算方式,所以它会判断对于两个都是一维的数组,怎么计算,两个二维以上的数组,怎么计算,比如二维以上数组的点乘,就是用我们现在介绍的矩阵相乘的方法计算。
●矩阵相乘
关于矩阵相乘,大学的线性代数课程里面学过,现在我再大概的介绍一下最基本的运算。矩阵运算的其他的一些规则、规律,后面遇到了会再进行介绍。
例:
比如现在有两个矩阵x和y。
x和y都是2*2的结构,就是2行2列的结构。
运算过程:
①矩阵相乘,首先要判断第一个矩阵的列数和第二个矩阵的行数是否相等,如果相等才能进行相乘。
在本例中,x的列数是2,y的行数是2,所以可以相乘。
②其次,把第一个矩阵的列数和第二个矩阵的行数消掉,剩下的数字就是相乘后的结果的行数和列数。
在本例中,把第一个矩阵的列数2和第二个矩阵的行数2消掉,剩下的数字就是第一个矩阵的行数2和第二个矩阵的列数2,所以相乘的结果是2行2列的矩阵。
假如说x是3行2列,y是2行5列,那么相乘的结果,就是3行5列的矩阵。
③运算过程如下图:
上图是两个2x2的矩阵相乘的运算过程和结果。