[转]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 ...
随机推荐
- Paper | Residual Attention Network for Image Classification
目录 1. 相关工作 2. Residual Attention Network 2.1 Attention残差学习 2.2 自上而下和自下而上 2.3 正则化Attention 最近看了些关于att ...
- 关于linux的权限系统知识点(drwxr-xr-x)
在Linux系统中使用 ll 命令可以看到文件的权限信息,如图: 接下来主要解释一下这些权限的含义: 可以看到总的十个字符: 1.第一个字符表示文件类型: d 表示是目录 - 表示是文件 l 表示是链 ...
- P3376 网络最大流模板(Dinic + dfs多路增广优化 + 炸点优化 + 当前弧优化)
### P3376 题目链接 ### 这里讲一下三种优化的实现以及正确性. 1.dfs多路增广优化 一般的Dinic算法中是这样的,bfs() 用于标记多条增广路,以至于能一次 bfs() 出多次 d ...
- 借助Git实现本地与GitHub远程双向传输(同步GitHub仓库)以及一些使用错误解决
前言 GitHub作为程序员必备的学习交流平台,虽然在国内速度不算快,但只要好好利用这个平台,我相信还是可以学习到很多东西.在暑期的时候,我曾经就初次远程连接到了GitHub,但开学后,不知道为什么又 ...
- PHPexcel导入数据的时候出现object解决方法
打印其他数据都是正常的,就这个是一个对象 从表格里面看不出问题 后面找到原因是表格里那个名字 李珊珊 周围有空白字符,去掉之后就能正常导入, 解决方法: 找到导入文件的那个方法 ...
- SqlServer,Oracle,db2,MySql查询表索引
SqlServer1. 查询表索引 SELECT 索引名称=a.name ,表名=c.name ,索引字段名=d.name ,索引字段位置=d.colid ,c.status FROM sysinde ...
- Bag of Tricks for Image Classification with Convolutional Neural Networks
这篇文章来自李沐大神团队,使用各种CNN tricks,将原始的resnet在imagenet上提升了四个点.记录一下,可以用到自己的网络上.如果图片显示不了,点击链接观看 baseline mode ...
- HTTP Error 500.35 - ANCM Multiple In-Process Applications in same Process
vs2019 win10 情况:报错 HTTP Error 500.35 - ANCM Multiple In-Process Applications in same Process 微软官方解 ...
- Winform中设置ZedGraph的X轴的刻度根据曲线获取
场景 Winforn中设置ZedGraph曲线图的属性.坐标轴属性.刻度属性: https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/details/10 ...
- Java 方法引用_特性
JAVA8 方法引用:(四种方法引用的使用) 对象引用的特点:不同的对象可以操作同一块的内容:而方法引用就是指为一个方法设置别名,相当于一个方法定义了不同的名字. 引用静态方法: 类名称 :: sta ...