python np.dot(a,b)乘法运算

首先我们知道矩阵运算是不满足交换律的,np.dot(a, b)与np.dot(b, a)是不一样的
另外np.dot(a,b)和a.dot(b)果是一样的

1.numpy中数组(矩阵)相乘np.dot(a,b)运算:

对于两数组a和b :
示例一:

a = np.array([[3], [3], [3]])  # (3,1)
b = np.array([2, 2, 1])  # (3,)print(a, "\na的shape", a.shape)
print(b, "\nb的shape", b.shape)
c = b.dot(a)
print(c, "\nc的shape",  c.shape)

输出:

 [3][3]]
a的shape (3, 1)
[2 2 1]
b的shape (3,)
[15]
c的shape (1,)

示例二:

a = np.array([[2,2,2,1],[3,3,3,1],[4,4,4,4]])  # shape=(3,4)
b = np.array([[1,1,1],[2,2,2],[3,3,3],[4,4,4]])  # shape=(4,3)

可以直接看他们的shape:a的shape为(3, 4)设为(m, n);b的shape为(4, 3)设为(x, y)
对于上面两个数组a,b:
np.dot(a,b)的运算条件为:n==x,如果a的shape变为(4, 3)则两则无法dot

  • 简单来说规律就是:如果a.shape=(m,n),b.shape=(x,y)那么**np.dot(a,b)**的运算条件为:n=x (这一点用于在python理解和快速判断数组的shape是否用对了)
  • 实际上数组运算的规律将两个数组画出来,是这样的:

    也就是矩阵的乘法运算

2.np.dot(a,b)运算之后的结果解析

规律:dot之后会将两组数组中相等的(符合dot条件的)维度消掉,得到剩下的维度组合成新的数组,如果剩下只有一个维度则为行(对应一维),列是无
对于a.shape=(m,n),b.shape=(x,y)
dot之后n和x会消掉,结果shape变成(m,y)
如果n为1(或者空),shape变为(y,)
e.g1:

a = np.array([1,1,1]) # shape=(3,)
b = np.array([[3],[3],[3]]) # shape=(3,1)print(np.dot(a,b))
print("dot之后的shape为:", np.dot(a,b).shape)

那么,3和3消掉,剩下只有一个数1,对应1行没有列==>(1,)
运算结果:
[9]
dot之后的shape为:(1,)

e.g2:

a.shape=(4,1)
b.shape=(1,4)

那么( 1和1消掉,剩下(4,4) )
np.dot(a,b)的shape为(4,4)

python3 numpy中矩阵np.dot(a,b)乘法运算相关推荐

  1. numpy中矩阵的转置_NumPy矩阵transpose()-Python中数组的转置

    numpy中矩阵的转置 The transpose of a matrix is obtained by moving the rows data to the column and columns ...

  2. python中average什么意思_在Python3 numpy中mean和average的区别详解

    mean和average都是计算均值的函数,在不指定权重的时候average和mean是一样的.指定权重后,average可以计算一维的加权平均值. 具体如下: import numpy as np ...

  3. python使用numpy中的np.mean函数计算数组的均值、np.var函数计算数据的方差、np.std函数计算数组的标准差

    python使用numpy中的np.mean函数计算数组的均值.np.var函数计算数据的方差.np.std函数计算数组的标准差 目录

  4. python使用numpy中的np.linalg.det函数计算2D numpy数组的行列式的值、使用numpy中的np.linalg.inv函数计算2D numpy数组的逆矩阵

    python使用numpy中的np.linalg.det函数计算2D numpy数组的行列式的值(determinant).使用numpy中的np.linalg.inv函数计算2D numpy数组的逆 ...

  5. Numpy中矩阵向量乘法np.dot()及np.multiply()以及*区别

    Numpy中的矩阵向量乘法分别是np.dot(a,b).np.multiply(a,b) 以及*,刚开始接触的时候比较模糊,于是自己整理了一下.先来介绍理论,然后再结合例子深入了解一下. 数组 矩阵 ...

  6. numpy中*,np.multiply和np.dot辨析

    目录 1 总结 2 向量 2.1 向量的内积(点乘) 2.2 向量的外积(叉乘):np.cross(a,b) 2.3 向量元素对应位置相乘 2.4 示例 3 矩阵 3.1 矩阵乘法(矩阵叉乘) 3.2 ...

  7. numpy中矩阵的点乘和叉乘

    点乘:两个矩阵对应位置的元素相乘,且这两个矩阵行数列数相等 import numpy as np a=np.array([[1,2,3],[1,2,3],[1,2,3]]) b=np.array([[ ...

  8. Numpy中矩阵对象

    numpy模块中的矩阵对象为numpy.matrix,包括矩阵数据的处理,矩阵的计算,以及基本的统计功能,转置,可逆性等等,包括对复数的处理,均在matrix对象中. class numpy.matr ...

  9. 【每天一个Python小知识】NumPy中的np.any

    import numpy as np np.any(np.array) 对矩阵中所有元素做或运算,存在True则返回True 一般在条件判等时使用,如: import numpy as np a = ...

最新文章

  1. 9亿训练集、通用CV任务,微软打造Florence模型打破分类、检索等多项SOTA
  2. springboot1.5.10兼容高版本6.1.1elasticsearch
  3. Python 基于python+mysql浅谈redis缓存设计与数据库关联数据处理
  4. 【CyberSecurityLearning 75】DC系列之DC-6渗透测试(WordPress)
  5. leetcode 474. Ones and Zeroes | 474. 一和零(双约束背包问题)
  6. mvc 404错误 php,java - springmvc 请求无法到达controller,出现404错误
  7. mysql数据库安装教程32位,看这一篇就够了!
  8. springboot Autowired BeanNotOfRequiredTypeException
  9. 关于简历的一点心得(纯属个人想法,非专业人士,欢迎批评指正~)
  10. python中random库
  11. SIFT特征原理与理解
  12. 使用coin3d画个小模型
  13. css自己做条纹背景,用css实现条纹背景
  14. matlab画区间柱状图,科学网—Matlab画柱状图 - 高淑敏的博文
  15. glassfish java环境_GlassFish安装和配置详解
  16. macOS Big Sur 安装 CH340 串口转 USB 驱动
  17. 计算机主板是cpu吗,主板和cpu是一起的吗
  18. PAT (Advanced Level) Practice 1043 Is It a Binary Search Tree (25 分) 凌宸1642
  19. 传输线方程与终端加载的无损耗传输线
  20. 华为完成首个5G测试;央行搭建区块链平台;苹果将于今夜凌晨举行发布会;蔚来汽车明日在美上市; | 雷锋网9月12日消息...

热门文章

  1. CharSequence类
  2. 个人财务管理系统有源码怎么用_微信里的客户怎么管理?用鱼汛微信管理系统...
  3. Python加盐加密方法hashlib(md5,sha224,sha1,sha256)
  4. python策略模式包含角色_详解Python设计模式之策略模式
  5. 深入理解卷积层,全连接层的作用意义
  6. file_operations结构体
  7. MYSQL存储磁盘创建vgcreate_【转】parted创建硬盘分区并创建LVM
  8. SCOM Rule 介绍 [SCOM中文系列之六]
  9. 【读书笔记】【独立思考】2018-04-03(1)
  10. flask 必知必会