转自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([[ 02],
       [ 6, 12]])

 

1.2 矩阵场景

【code】

np.multiply(np.mat(A),np.mat(B))     #矩阵对应元素位置相乘,利用np.mat()将数组转换为矩阵

【result】

matrix([[ 02],
        [ 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([[ 47],
       [ 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([[ 47],
        [ 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*#对应位置点乘

【result】

array([[ 02],
       [ 6, 12]])

  



3.2矩阵场景

【code】

(np.mat(A))*(np.mat(B))  #执行矩阵运算

【result】

matrix([[ 47],
        [ 8, 15]])

[转]python中np.multiply()、np.dot()和星号(*)三种乘法运算的区别的更多相关文章

  1. python中np.multiply()、np.dot()和星号(*)三种乘法运算的区别(转)

    为了区分三种乘法运算的规则,具体分析如下: import numpy as np 1. np.multiply()函数 函数作用 数组和矩阵对应位置相乘,输出与相乘数组/矩阵的大小一致 1.1数组场景 ...

  2. Python中斐波那契数列的四种写法

    在这些时候,我可以附和着笑,项目经理是决不责备的.而且项目经理见了孔乙己,也每每这样问他,引人发笑.孔乙己自己知道不能和他们谈天,便只好向新人说话.有一回对我说道,“你学过数据结构吗?”我略略点一点头 ...

  3. python核心高级学习总结3-------python实现进程的三种方式及其区别

    python实现进程的三种方式及其区别 在python中有三种方式用于实现进程 多进程中, 每个进程中所有数据( 包括全局变量) 都各有拥有⼀份, 互不影响 1.fork()方法 ret = os.f ...

  4. ASP.NET MVC中使用Unity进行依赖注入的三种方式

    在ASP.NET MVC中使用Unity进行依赖注入的三种方式 2013-12-15 21:07 by 小白哥哥, 146 阅读, 0 评论, 收藏, 编辑 在ASP.NET MVC4中,为了在解开C ...

  5. VC中加载LIB库文件的三种方法

    VC中加载LIB库文件的三种方法 在VC中加载LIB文件的三种方法如下: 方法1:LIB文件直接加入到工程文件列表中   在VC中打开File View一页,选中工程名,单击鼠标右键,然后选中&quo ...

  6. jQuery中detach&&remove&&empty三种方法的区别

    jQuery中empty&&remove&&detach三种方法的区别 empty():移除指定元素内部的所有内容,但不包括它本身 remove():移除指定元素内部的 ...

  7. 命令stat anaconda-ks.cfg会显示出文件的三种时间状态(已加粗):Access、Modify、Change。这三种时间的区别将在下面的touch命令中详细详解:

    7.stat命令 stat命令用于查看文件的具体存储信息和时间等信息,格式为"stat 文件名称". stat命令可以用于查看文件的存储信息和时间等信息,命令stat anacon ...

  8. python中List添加、删除元素的几种方法

    一.python中List添加元素的几种方法 List 是 Python 中常用的数据类型,它一个有序集合,即其中的元素始终保持着初始时的定义的顺序(除非你对它们进行排序或其他修改操作).在Pytho ...

  9. 详解Python中的__new__、__init__、__call__三个特殊方法(zz)

    __new__: 对象的创建,是一个静态方法,第一个参数是cls.(想想也是,不可能是self,对象还没创建,哪来的self)__init__ : 对象的初始化, 是一个实例方法,第一个参数是self ...

随机推荐

  1. matlab练习程序(点云密度)

    算法思路是首先建立kd树,然后找到每个点距离最近的点的距离,对距离求和再求平均即可. 代码如下: clear all; close all; clc; pc = pcread('rabbit.pcd' ...

  2. 【Linux命令】setterm命令修改虚拟机颜色显示(目录及背景颜色)

    VMware设置目录及颜色显示 进入linux界面,默认背景为黑色,字体为白色 一.setterm命令 setterm向终端写一个字符串到标准输出,调用终端的特定功能.在虚拟终端上使用,将会改变虚拟终 ...

  3. glibc编译安装

    glibc是gnu发布的libc库,即c运行库.glibc是linux系统中最底层的api,几乎其它任何运行库都会依赖于glibc.glibc除了封装linux操作系统所提供的系统服务外,它本身也提供 ...

  4. Alpine Linux 安装 lxml Pillow 失败

    lixm 需要编译安装,因此需要先安装gcc g++ RUN apk add --update --no-cache g++ gcc libxslt-dev python3-dev openssl-d ...

  5. linux如何修改权限详解

    前言 今日,同事问我,服务器上拷贝过来的tomcat,怎么执行不了./startup.sh.于是,我一想,那肯定是没有权限的问题了.于是使用chmod命令更改了权限后,就可以执行了.项目正常启动.我想 ...

  6. HTTP Error 500.0 - ANCM In-Process Handler Load Failure 排错历程

    先上报错图 环境 Window Server 2008 r2 netcore 2.2 排错历程 看到这个错 我第一个想到netcore 安装问题 先检查了下环境 发现没问题 我排查了下应用池 确定是无 ...

  7. 最全的.NET Core跨平台微服务学习资源

    一.Asp.net Core基础 微软中文官网:https://docs.microsoft.com/zh-cn/aspnet/core/getting-started/ 微软英文官网:https:/ ...

  8. java核心技术第二篇之数据库SQL语法

    #查询products表记录SELECT * FROM products WHERE price > 2000;-- 单行注释/* 多行注释*/#创建数据库CREATE DATABASE hei ...

  9. C# Spire简单实现导出word(去水印)

    今天老姐打电话,说:下个月一号要换到其他岗位上,到时需要对word操作,小弟我随口答应,这个简单,我给你开发一款小程序,你直接在我程序上录入一些数据,我给你导出到word中. 利用中午空闲时间,百度了 ...

  10. 证书锁定SSL/TLS Pinning

    前言 APP端抓包中, 设置抓包代理后会发现部分APP(如app store.Facebook)直接无法访问,其他部分app又功能正常,为什么呢?这涉及 ssl-pinning,证书锁定. 证书锁定( ...