np.dot()函数的用法详解


Posted in Python onJanuary 17, 2020

基本简介

dot函数为numpy库下的一个函数,主要用于矩阵的乘法运算,其中包括:向量内积、多维矩阵乘法和矩阵与向量的乘法。

1. 向量内积

向量其实是一维的矩阵,两个向量进行内积运算时,需要保证两个向量包含的元素个数是相同的。

例1:

import numpy as np

x = np.array([1, 2, 3, 4, 5, 6, 7])
y = np.array([2, 3, 4, 5, 6, 7, 8])
result = np.dot(x, y)
print(result)

输出结果:

168

计算过程就是将向量中对应元素相乘,再相加所得。即普通的向量乘法运算。

2. 矩阵乘法运算

两个矩阵(x, y)如果可以进行乘法运算,需要满足以下条件:
x为 m×n 阶矩阵,y为 n×p 阶矩阵,
则相乘的结果 result 为 m×p 阶矩阵。

例2:

import numpy as np

x = np.array([[1, 2, 3],
   [3, 4, 4]])
y = np.array([[0, 1, 1, 1],
   [1, 2, 0, 1],
   [0, 0, 2, 1]])
result = np.dot(x, y)

print(result)
print("x阶数:" + str(x.shape))
print("y阶数:" + str(y.shape))
print("result阶数:" + str(result.shape))

结果为:

[[ 2  5  7  6]
 [ 4 11 11 11]]
x阶数:(2, 3)
y阶数:(3, 4)
result阶数:(2, 4)

dot(x, y)不等于dot(y, x),矩阵乘法不满足交换律

例3:

import numpy as np

x = np.array([[1, 2],
   [3, 4]])
y = np.array([[2, 2],
   [1, 2]])
result1 = np.dot(x, y)
result2 = np.dot(y, x)

print("result1 = " + str(result1))
print("result2 = " + str(result2))

结果为:

result1 = [[ 4  6]
           [10 14]]
result2 = [[ 8 12]
           [ 7 10]]

如果不满足运算前提,都不可以运算。例2的dot(y,x)不满足运算条件,因此运算会报错。

例4:

import numpy as np

x = np.array([[1, 2, 3],
   [3, 4, 4]])
y = np.array([[0, 1, 1, 1],
   [1, 2, 0, 1],
   [0, 0, 2, 1]])
result = np.dot(y, x)

print(result)

结果为:

Traceback (most recent call last):
  File "numpy1.py", line 96, in <module>
    result = np.dot(y,x)
  File "<__array_function__ internals>", line 6, in dot
ValueError: shapes (3,4) and (2,3) not aligned: 4 (dim 1) != 2 (dim 0)

3. 矩阵与向量乘法

矩阵x为m×n阶,向量y为n阶向量,则矩阵x和向量y可以进行乘法运算,结果为m阶向量。进行运算时,会首先将后面一项进行自动转置操作,之后再进行乘法运算。

例5:

import numpy as np

x = np.array([[1, 2, 3],
   [3, 4, 4]])
y = np.array([1, 2, 3])
result = np.dot(x, y)

print(result)
print("x阶数:" + str(x.shape))
print("y阶数:" + str(y.shape))
print("result阶数:" + str(result.shape))

结果为:

[14 23]
x阶数:(2, 3)
y阶数:(3,)
result阶数:(2,)

例6:仍然不满足交换律

import numpy as np

x = np.array([[1, 2, 3],
   [3, 4, 4],
   [0, 1, 1]])
y = np.array([1, 2, 3])
result1 = np.dot(x, y) # 1×1 + 2×2 + 3×3 = 14(result1的第一个元素)
result2 = np.dot(y, x) # 1×1 + 2×3 + 3×0 = 7 (result2的第一个元素)

print("result1 = " + str(result1))
print("result2 = " + str(result2))

结果为:

result1 = [14 23  5]
result2 = [ 7 13 14]

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
Python修改Excel数据的实例代码
Nov 01 Python
Python实现的Excel文件读写类
Jul 30 Python
Python基于Pymssql模块实现连接SQL Server数据库的方法详解
Jul 20 Python
python+influxdb+shell编写区域网络状况表
Jul 27 Python
实例分析python3实现并发访问水平切分表
Sep 29 Python
python实现微信定时每天和女友发送消息
Apr 29 Python
24式加速你的Python(小结)
Jun 13 Python
基于python3 pyQt5 QtDesignner实现窗口化猜数字游戏功能
Jul 15 Python
python采集百度搜索结果带有特定URL的链接代码实例
Aug 30 Python
python安装virtualenv虚拟环境步骤图文详解
Sep 18 Python
wxPython窗体拆分布局基础组件
Nov 19 Python
python如何将mat文件转为png
Jul 15 Python
python使用numpy实现直方图反向投影示例
Jan 17 #Python
对python中 math模块下 atan 和 atan2的区别详解
Jan 17 #Python
python 计算方位角实例(根据两点的坐标计算)
Jan 17 #Python
Python autoescape标签用法解析
Jan 17 #Python
flask利用flask-wtf验证上传的文件的方法
Jan 17 #Python
Python with标签使用方法解析
Jan 17 #Python
Python运行DLL文件的方法
Jan 17 #Python
You might like
一个好用的分页函数
2006/11/16 PHP
php源码之将图片转化为data/base64数据流实例详解
2016/11/27 PHP
List Installed Software Features
2007/06/11 Javascript
汉化英文版的Dreamweaver CS5并自动提示jquery
2010/11/25 Javascript
js模仿hover的具体实现代码
2013/12/30 Javascript
JavaScript面向对象编程入门教程
2014/04/16 Javascript
使用jquery实现放大镜效果
2014/09/02 Javascript
Javascript实现可旋转的圆圈实例代码
2015/08/04 Javascript
jQuery+CSS实现的网页二级下滑菜单效果
2015/08/25 Javascript
JavaScript中innerHTML,innerText,outerHTML的用法及区别
2015/09/01 Javascript
JS设置cookie、读取cookie
2016/02/24 Javascript
深入理解js中this的用法
2016/05/28 Javascript
JQuery遍历元素的后代和同胞实现方法
2016/09/18 Javascript
微信小程序 Audio API详解及实例代码
2016/09/30 Javascript
Vue数据驱动模拟实现1
2017/01/11 Javascript
react性能优化达到最大化的方法 immutable.js使用的必要性
2017/03/09 Javascript
NodeJs安装npm包一直失败的解决方法
2017/04/28 NodeJs
jQuery输入框密码的显示隐藏【代码分享】
2017/04/29 jQuery
浅谈函数调用的不同方式,以及this的指向
2017/09/17 Javascript
JavaScript通过mouseover()实现图片变大效果的示例
2017/12/20 Javascript
详解Vue+axios+Node+express实现文件上传(用户头像上传)
2018/08/10 Javascript
vuex 实现getter值赋值给vue组件里的data示例
2019/11/05 Javascript
关于JavaScript中异步/等待的用法与理解
2020/11/18 Javascript
[52:03]DOTA2-DPC中国联赛 正赛 Ehome vs iG BO3 第三场 1月31日
2021/03/11 DOTA
python 出现SyntaxError: non-keyword arg after keyword arg错误解决办法
2017/02/14 Python
python读取中文txt文本的方法
2018/04/12 Python
python实现决策树ID3算法的示例代码
2018/05/30 Python
解决python3 Pycharm上连接数据库时报错的问题
2018/12/03 Python
如何用python写一个简单的词法分析器
2018/12/18 Python
CSS3中Transition动画属性用法详解
2016/07/04 HTML / CSS
Aerosoles爱柔仕官网:美国舒软女鞋品牌
2017/07/17 全球购物
分别介绍一下Session Bean和Entity Bean
2015/03/13 面试题
中英文求职信范文
2014/01/27 职场文书
财务主管岗位职责
2014/02/28 职场文书
优秀教师个人材料
2014/12/15 职场文书
教你怎么用python爬取爱奇艺热门电影
2021/05/20 Python