Python矩阵相乘 您所在的位置:网站首页 两个矩阵相乘怎么乘出来 Python矩阵相乘

Python矩阵相乘

2023-08-27 00:20| 来源: 网络整理| 查看: 265

目录

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 实验室设备网 版权所有