[转]python中np.multiply()、np.dot()和星号(*)三种乘法运算的区别
转自https://blog.csdn.net/zenghaitao0128/article/details/78715140
为了区分三种乘法运算的规则,具体分析如下:
import numpy as np
1. np.multiply()函数
函数作用
数组和矩阵对应位置相乘,输出与相乘数组/矩阵的大小一致
1.1数组场景
A = np.arange(1,5).reshape(2,2)
A
array([[1, 2],
[3, 4]])
B = np.arange(0,4).reshape(2,2)
B
array([[0, 1],
[2, 3]])
np.multiply(A,B) #数组对应元素位置相乘
array([[ 0, 2],
[ 6, 12]])
1.2 矩阵场景
np.multiply(np.mat(A),np.mat(B)) #矩阵对应元素位置相乘,利用np.mat()将数组转换为矩阵
matrix([[ 0, 2],
[ 6, 12]])
np.sum(np.multiply(np.mat(A),np.mat(B))) #输出为标量
20
2. np.dot()函数
函数作用
对于秩为1的数组,执行对应位置相乘,然后再相加;
对于秩不为1的二维数组,执行矩阵乘法运算;超过二维的可以参考numpy库介绍。
2.1 数组场景
2.1.1 数组秩不为1的场景
A = np.arange(1,5).reshape(2,2)
A
array([[1, 2],
[3, 4]])
B = np.arange(0,4).reshape(2,2)
B
array([[0, 1],
[2, 3]])
np.dot(A,B) #对数组执行矩阵相乘运算
array([[ 4, 7],
[ 8, 15]])
2.1.2 数组秩为1的场景
C = np.arange(1,4)
C
array([1, 2, 3])
D = np.arange(0,3)
D
array([0, 1, 2])
np.dot(C,D) #对应位置相乘,再求和
8
2.2 矩阵场景
np.dot(np.mat(A),np.mat(B)) #执行矩阵乘法运算
matrix([[ 4, 7],
[ 8, 15]])
3. 星号(*)乘法运算
作用
对数组执行对应位置相乘
对矩阵执行矩阵乘法运算
3.1 数组场景
A = np.arange(1,5).reshape(2,2)
A
array([[1, 2],
[3, 4]])
B = np.arange(0,4).reshape(2,2)
B
array([[0, 1],
[2, 3]])
A*B #对应位置点乘
array([[ 0, 2],
[ 6, 12]])
3.2矩阵场景
(np.mat(A))*(np.mat(B)) #执行矩阵运算
matrix([[ 4, 7],
[ 8, 15]])
为了区分三种乘法运算的规则,具体分析如下:
import numpy as np |
1. np.multiply()函数
函数作用
数组和矩阵对应位置相乘,输出与相乘数组/矩阵的大小一致
1.1数组场景
【code】
A = np.arange( 1 , 5 ).reshape( 2 , 2 ) A |
【result】
array([[ 1 , 2 ], [ 3 , 4 ]]) |
【code】
B = np.arange( 0 , 4 ).reshape( 2 , 2 ) B |
【result】
array([[ 0 , 1 ], [ 2 , 3 ]]) |
【code】
np.multiply(A,B) #数组对应元素位置相乘 |
【result】
array([[ 0 , 2 ], [ 6 , 12 ]]) |
1.2 矩阵场景
【code】
np.multiply(np.mat(A),np.mat(B)) #矩阵对应元素位置相乘,利用np.mat()将数组转换为矩阵 |
【result】
matrix([[ 0 , 2 ], [ 6 , 12 ]]) |
【code】
np. sum (np.multiply(np.mat(A),np.mat(B))) #输出为标量 |
【result】
|
2. np.dot()函数
函数作用
对于秩为1的数组,执行对应位置相乘,然后再相加;
对于秩不为1的二维数组,执行矩阵乘法运算;超过二维的可以参考numpy库介绍。
2.1 数组场景
2.1.1 数组秩不为1的场景
【code】
A = np.arange( 1 , 5 ).reshape( 2 , 2 ) A |
【result】
array([[ 1 , 2 ], [ 3 , 4 ]]) |
【code】
B = np.arange( 0 , 4 ).reshape( 2 , 2 ) B |
【result】
array([[ 0 , 1 ], [ 2 , 3 ]]) |
【code】
np.dot(A,B) #对数组执行矩阵相乘运算 |
【result】
array([[ 4 , 7 ], [ 8 , 15 ]]) |
2.1.2 数组秩为1的场景
【code】
C = np.arange( 1 , 4 ) C |
【result】
array([ 1 , 2 , 3 ]) |
【code】
D = np.arange( 0 , 3 ) D |
【result】
array([ 0 , 1 , 2 ]) |
【code】
np.dot(C,D) #对应位置相乘,再求和 |
【result】
8 |
2.2 矩阵场景
【code】
np.dot(np.mat(A),np.mat(B)) #执行矩阵乘法运算 |
【result】
matrix([[ 4 , 7 ], [ 8 , 15 ]]) |
3. 星号(*)乘法运算
作用
对数组执行对应位置相乘
对矩阵执行矩阵乘法运算
3.1 数组场景
【code】
A = np.arange( 1 , 5 ).reshape( 2 , 2 ) A |
【result】
array([[ 1 , 2 ], [ 3 , 4 ]]) |
【code】
B = np.arange( 0 , 4 ).reshape( 2 , 2 ) B |
【result】
array([[ 0 , 1 ], [ 2 , 3 ]]) |
【code】
A * B #对应位置点乘 |
【result】
array([[ 0 , 2 ], [ 6 , 12 ]]) |
3.2矩阵场景
【code】
(np.mat(A)) * (np.mat(B)) #执行矩阵运算 |
【result】
matrix([[ 4 , 7 ], [ 8 , 15 ]]) |
[转]python中np.multiply()、np.dot()和星号(*)三种乘法运算的区别的更多相关文章
- python中np.multiply()、np.dot()和星号(*)三种乘法运算的区别(转)
为了区分三种乘法运算的规则,具体分析如下: import numpy as np 1. np.multiply()函数 函数作用 数组和矩阵对应位置相乘,输出与相乘数组/矩阵的大小一致 1.1数组场景 ...
- Python中斐波那契数列的四种写法
在这些时候,我可以附和着笑,项目经理是决不责备的.而且项目经理见了孔乙己,也每每这样问他,引人发笑.孔乙己自己知道不能和他们谈天,便只好向新人说话.有一回对我说道,“你学过数据结构吗?”我略略点一点头 ...
- python核心高级学习总结3-------python实现进程的三种方式及其区别
python实现进程的三种方式及其区别 在python中有三种方式用于实现进程 多进程中, 每个进程中所有数据( 包括全局变量) 都各有拥有⼀份, 互不影响 1.fork()方法 ret = os.f ...
- ASP.NET MVC中使用Unity进行依赖注入的三种方式
在ASP.NET MVC中使用Unity进行依赖注入的三种方式 2013-12-15 21:07 by 小白哥哥, 146 阅读, 0 评论, 收藏, 编辑 在ASP.NET MVC4中,为了在解开C ...
- VC中加载LIB库文件的三种方法
VC中加载LIB库文件的三种方法 在VC中加载LIB文件的三种方法如下: 方法1:LIB文件直接加入到工程文件列表中 在VC中打开File View一页,选中工程名,单击鼠标右键,然后选中&quo ...
- jQuery中detach&&remove&&empty三种方法的区别
jQuery中empty&&remove&&detach三种方法的区别 empty():移除指定元素内部的所有内容,但不包括它本身 remove():移除指定元素内部的 ...
- 命令stat anaconda-ks.cfg会显示出文件的三种时间状态(已加粗):Access、Modify、Change。这三种时间的区别将在下面的touch命令中详细详解:
7.stat命令 stat命令用于查看文件的具体存储信息和时间等信息,格式为"stat 文件名称". stat命令可以用于查看文件的存储信息和时间等信息,命令stat anacon ...
- python中List添加、删除元素的几种方法
一.python中List添加元素的几种方法 List 是 Python 中常用的数据类型,它一个有序集合,即其中的元素始终保持着初始时的定义的顺序(除非你对它们进行排序或其他修改操作).在Pytho ...
- 详解Python中的__new__、__init__、__call__三个特殊方法(zz)
__new__: 对象的创建,是一个静态方法,第一个参数是cls.(想想也是,不可能是self,对象还没创建,哪来的self)__init__ : 对象的初始化, 是一个实例方法,第一个参数是self ...
随机推荐
- HTML连载49-清除浮动的第三种方式(内外墙法)
一.清除浮动的第三种方式 1.隔墙法有两种如下:外墙法和内墙法. 2.外墙法 (1)在两个盒子中间添加一个额外的块级元素 (2)给这个额外添加的块级元素设置:clear:both;属性 注意点: ...
- windows 10使用vscode进行远程代码开发 | tutorial to use vscode for remote development using ssh on windows
本文首发于个人博客https://kezunlin.me/post/c93b6ba6/,欢迎阅读最新内容! tutorial to use vscode for remote development ...
- 压缩json的一些方式
有时候系统之间的交互需要传递报文,但是报文的量有时候是巨大的,会占用很大的贷款, 或者有时候是通过加密进行传递比如:RSA非对称加密,如果这样的话,解密方就会花费很多的时间进行解密.因为RSA加密安全 ...
- 杂牌机搞机之旅最终章————刷入Xposed框架
杂牌机搞机之旅最终章----刷入Xposed框架 recovery移植不成功,没办法,挂载分区好像挂载不上,所以,刷入magisk如果卡在开机屏,只能线刷解决..心累.. 所以,折腾完XPosed框架 ...
- sql server 随记 -- 月份/日期 查询
月份 SELECT * FROM ( ] ) a UNPIVOT ( xxx ]) ) a2; 日期 SELECT * FROM ( ] )a UNPIVOT( xxx ]) )a2 (存档)
- 使用CAD快速看图如何将图纸打印和预览?
有相关CAD工作经验的小伙伴们都知道,绘制完CAD图纸后是需要借助CAD看图工具来进行查看图纸的,其实CAD快速看图中不仅能够对图纸进行查看,还能够将CAD图纸进行打印出来.但是有很多的伙伴不知道要怎 ...
- CSS的border-radius 设置圆弧
现象:将div变为有一定幅度的圆形.椭圆形等 方法:使用css的border-radius 属性进行设置CSS3 border-radius 属性:向 div 元素添加圆角边框: 一:首先建立一个di ...
- 关于 SONY WF1000XM3 在 Windows 10 下蓝牙连接只有 Handfree 没有 Stereo 模式
应该是驱动适配问题,目前粗暴的解决方案貌似下载安装一个 Intel APTX 驱动就可以了: https://www.dell.com/support/home/cn/zh/cndhs1/driver ...
- Tasteless challenges hard WP
hard Level 5- Fred CMS 十有八九是注入,不过测试引号和转义符并没发现什么,于是跑了下密码字典,竟然发现网页提示 sql injection detected! ,然后发现原来是密 ...
- 定制Dynamics CRM标准导出功能:不能导出指定列的值
关注本人微信和易信公众号: 微软动态CRM专家罗勇 ,回复239或者20161203可方便获取本文,同时可以在第一间得到我发布的最新的博文信息,follow me!我的网站是 www.luoyong. ...