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提取html文件中的特定数据的实现代码
Mar 24 Python
Python中的自定义函数学习笔记
Sep 23 Python
python连接oracle数据库实例
Oct 17 Python
使用Python的Zato发送AMQP消息的教程
Apr 16 Python
Python实现基本数据结构中队列的操作方法示例
Dec 04 Python
python放大图片和画方格实现算法
Mar 30 Python
Pytorch 实现自定义参数层的例子
Aug 17 Python
详解python uiautomator2 watcher的使用方法
Sep 09 Python
简单瞅瞅Python vars()内置函数的实现
Sep 27 Python
如何通过安装HomeBrew来安装Python3
Dec 23 Python
python Timer 类使用介绍
Dec 28 Python
Python实现批量自动整理文件
Mar 16 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
smarty+adodb+部分自定义类的php开发模式
2006/12/31 PHP
WordPress中制作导航菜单的PHP核心方法讲解
2015/12/11 PHP
PHP培训要多少钱
2017/06/06 PHP
JavaScript基础篇之变量作用域、传值、传址的简单介绍与实例
2013/06/29 Javascript
parentElement,srcElement的使用小结
2014/01/13 Javascript
jQuery实现图片渐入渐出切换展示效果
2015/08/15 Javascript
初步使用Node连接Mysql数据库
2016/03/03 Javascript
Vue.js基础知识汇总
2016/04/27 Javascript
Vue.JS入门教程之事件监听
2016/12/01 Javascript
详解基于webpack和vue.js搭建开发环境
2017/04/05 Javascript
ES6中Set和Map数据结构,Map与其它数据结构互相转换操作实例详解
2019/02/28 Javascript
jquery实现进度条状态展示
2020/03/26 jQuery
vant中的toast层级改变操作
2020/11/04 Javascript
[43:35]TI4 循环赛第二日Liquid vs Fnatic
2014/07/11 DOTA
[52:31]VP vs Serenity 2018国际邀请赛小组赛BO2 第二场 8.16
2018/08/17 DOTA
[36:16]完美世界DOTA2联赛PWL S3 access vs Rebirth 第一场 12.19
2020/12/24 DOTA
零基础写python爬虫之urllib2中的两个重要概念:Openers和Handlers
2014/11/05 Python
python判断一个集合是否为另一个集合的子集方法
2018/05/04 Python
PyTorch的深度学习入门之PyTorch安装和配置
2019/06/27 Python
Pytorch实现将模型的所有参数的梯度清0
2020/06/24 Python
详解python算法常用技巧与内置库
2020/10/17 Python
python 从list中随机取值的方法
2020/11/16 Python
python中的对数log函数表示及用法
2020/12/09 Python
CSS3 三维变形实现立体方块特效源码
2016/12/15 HTML / CSS
CSS3感应鼠标的背景闪烁和图片缩放动画效果
2014/05/14 HTML / CSS
详解Html5页面实现下载文件(apk、txt等)的三种方式
2018/10/22 HTML / CSS
北美领先的牛仔品牌:Buffalo David Bitton
2017/05/22 全球购物
请说出几个常用的异常类
2013/01/08 面试题
教师校本培训方案
2014/02/26 职场文书
三八妇女节活动总结
2014/05/04 职场文书
写求职信有哪些注意事项
2014/05/08 职场文书
抗洪救灾标语
2014/10/08 职场文书
新郎新娘答谢词
2015/01/04 职场文书
捐资助学感谢信
2015/01/21 职场文书
中标通知书格式
2015/04/17 职场文书
2016同学毕业寄语大全
2015/12/04 职场文书