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中精确输出JSON浮点数的方法
Apr 18 Python
Python装饰器用法实例总结
Feb 07 Python
python实现QQ空间自动点赞功能
Apr 09 Python
python将字符串list写入excel和txt的实例
Jul 20 Python
Python 日志logging模块用法简单示例
Oct 18 Python
Django框架模板用法入门教程
Nov 04 Python
django实现类似触发器的功能
Nov 15 Python
Pyqt5自适应布局实例
Dec 13 Python
python可视化text()函数使用详解
Feb 11 Python
Django中F函数的使用示例代码详解
Jul 06 Python
详解Anaconda 的安装教程
Sep 23 Python
python运行脚本文件的三种方法实例
Jun 25 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
ftp类(myftp.php)
2006/10/09 PHP
将数字格式的计算结果转为汉字格式
2006/10/09 PHP
php 过滤英文标点符号及过滤中文标点符号代码
2014/06/12 PHP
PHP信号量基本用法实例详解
2016/02/12 PHP
jQuery学习笔记 操作jQuery对象 文档处理
2012/09/19 Javascript
Jquery选择子控件&quot;大于号&quot;和&quot; &quot;区别介绍及使用示例
2013/06/25 Javascript
js二维数组定义和初始化的三种方法总结
2014/03/03 Javascript
JavaScript中实现单体模式分享
2015/01/29 Javascript
jQuery及JS实现循环中暂停的方法
2015/02/02 Javascript
jQuery使用fadein方法实现渐出效果实例
2015/03/27 Javascript
js动态创建及移除div的方法
2015/06/03 Javascript
JS实现具备延时功能的滑动门菜单效果
2015/09/17 Javascript
Chrome不支持showModalDialog模态对话框和无法返回returnValue问题的解决方法
2016/10/30 Javascript
JQuery用$.ajax或$.getJSON跨域获取JSON数据的实现代码
2017/09/23 jQuery
微信小程序基于slider组件动态修改标签透明度的方法示例
2017/12/04 Javascript
在Vuex使用dispatch和commit来调用mutations的区别详解
2018/09/18 Javascript
Element input树型下拉框的实现代码
2018/12/21 Javascript
Vue 2.0 侦听器 watch属性代码详解
2019/06/19 Javascript
js实现无缝滚动双图切换效果
2019/07/09 Javascript
浅谈js中的attributes和Attribute的用法与区别
2020/07/16 Javascript
python实现加密的方式总结
2020/01/19 Python
Python re正则表达式元字符分组()用法分享
2020/02/10 Python
python 基于opencv 实现一个鼠标绘图小程序
2020/12/11 Python
python抢购软件/插件/脚本附完整源码
2021/03/04 Python
HTML5 微格式和相关的属性名称
2010/02/10 HTML / CSS
土耳其时尚购物网站:Morhipo
2017/09/04 全球购物
俄罗斯隐形眼镜和眼镜在线商店:Cronos
2020/06/02 全球购物
客户代表自我评价范例
2013/09/24 职场文书
电气专业应届生求职信
2013/11/01 职场文书
中学生纪念九一八事变演讲稿
2014/09/14 职场文书
乡镇党员干部四风对照检查材料思想汇报
2014/09/27 职场文书
教师个人年终总结
2015/02/11 职场文书
2015国庆节放假通知范文
2015/07/30 职场文书
nginx的zabbix 5.0安装部署的方法步骤
2021/07/16 Servers
Ajax实现三级联动效果
2021/10/05 Javascript
使用canvas仿Echarts实现金字塔图的实例代码
2021/11/11 HTML / CSS