Python矩阵相乘 | 您所在的位置:网站首页 › 两个矩阵相乘怎么乘出来 › Python矩阵相乘 |
目录 1 引言 2 Python里向量和矩阵的概念 3 矩阵相乘——Python 4 Python矩阵相乘举例说明 4.1 对位乘积举例说明 4.2 矩阵乘法 4.3 向量内积 1 引言矩阵相乘分为叉乘和点乘,叉乘就是矩阵的乘法,指矩阵A的第一行乘以矩阵B的第一列,各个元素对应相乘后求和作为第一个元素的值。能够进行叉乘运算的场景:A的列数等于B的行数。 矩阵的点乘就是矩阵A和矩阵B各个对应元素的相乘。能够进行点乘运算的场景:①A和B的行向量个数相等;② A和B的列向量的个数相等;③ A和B的行向量和列向量都相等。 在matlab里面实现点乘用“.*”,实现叉乘用“*”,非常清晰明了。但是在Python里面实现矩阵相乘时经常会报错,原因是在Python里面向量和矩阵的概念和数学里面的概念有点差异。 2 Python里向量和矩阵的概念Pyhton的向量和矩阵是严格区分开来的,这个和数学上(或者Matlab里)的概念是不一样的: 向量:一维; 矩阵:最少是二维。 举例: import numpy as np A=np.array([1,2,3]) #一维向量,shape=(3,) B=np.array([[1,2,3]]) #二维数组,shape=(1,3) print(f'A={A}') print(f'B={B}') print(f'A.shape={A.shape}') print(f'B.shape={B.shape}') print(f'A.T={A.T}') print(f'B.T={B.T}')运行结果如下: A=[1 2 3] B=[[1 2 3]] A.shape=(3,) B.shape=(1, 3) A.T=[1 2 3] B.T= [[1] [2] [3]]代码中: ① A是向量,其shape为(3,);其B是行数为1的二维数组,其shape为(1,3); ② 向量没有转置的概念。A的转置还是A,而B的转置是从行数为1的二维数组变成了列数为1的二维数组,这一点和matlab里面是不一样的。 由于以上两点原因,在计算矩阵相乘时,初学者很容易犯错。 3 矩阵相乘——Python一般情况下,矩阵相乘会有以下三种想要的结果: ① 对位乘积:两个矩阵shape相同,各元素对应相乘,结果是一个相同shape的矩阵 ② 矩阵乘法:数学上的矩阵乘法,结果是一个矩阵 ③ 向量内积:对应元素相乘,再相加,结果是一个数值 对应的实现方式如下: ① 对位乘积: a*b 、multiply(a,b) ② 矩阵乘积: dot(a,b) 、matmul(a,b) 、a@b ③ 向量内积: dot(a,b)、a@b 当a,b均为一维向量 实际上对位乘积采用的是点乘,矩阵乘积或者向量内积采用的是叉乘。 4 Python矩阵相乘举例说明从Python里面向量和矩阵的概念可知,向量和矩阵可以分为三种形式:一维向量、行数为1或者列数为1的二维矩阵、行数和行数均大于等于2的二维矩阵。对于初学者来说很容易把一维向量和行数为1或者列数为1的二维矩阵弄混,从而导致矩阵相乘出错。 |
CopyRight 2018-2019 实验室设备网 版权所有 |