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中实现对Timestamp和Datetime及UTC时间之间的转换
Apr 08 Python
Python实现变量数值交换及判断数组是否含有某个元素的方法
Sep 18 Python
Python Socket使用实例
Dec 18 Python
TensorFlow saver指定变量的存取
Mar 10 Python
Python编程中NotImplementedError的使用方法
Apr 21 Python
浅谈pandas筛选出表中满足另一个表所有条件的数据方法
Feb 08 Python
基于python实现自动化办公学习笔记(CSV、word、Excel、PPT)
Aug 06 Python
python实现画出e指数函数的图像
Nov 21 Python
Python连接Mysql进行增删改查的示例代码
Aug 03 Python
python IP地址转整数
Nov 20 Python
pycharm 快速解决python代码冲突的问题
Jan 15 Python
python 三边测量定位的实现代码
Apr 22 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
php实现简单文件下载的方法
2015/01/30 PHP
laravel异步监控定时调度器实例详解
2019/06/21 PHP
利用javascript查看html源文件
2006/11/08 Javascript
Javascript this 的一些学习总结
2012/08/31 Javascript
JS实现一个列表中包含上移下移删除等功能
2014/09/24 Javascript
javascript将数字转换整数金额大写的方法
2015/01/27 Javascript
JavaScript之Object类型介绍
2015/04/01 Javascript
JavaScript中window.open用法实例详解
2015/04/15 Javascript
JQuery插件jcarousellite的参数中文说明
2015/05/11 Javascript
基于jQuery仿淘宝产品图片放大镜代码分享
2020/06/23 Javascript
AngularJs自定义服务之实现签名和加密
2016/08/02 Javascript
HTML5 实现的一个俄罗斯方块实例代码
2016/09/19 Javascript
详谈js对url进行编码和解码(三种方式的区别)
2017/08/16 Javascript
weex slider实现滑动底部导航功能
2017/08/28 Javascript
JavaScript自执行函数和jQuery扩展方法详解
2017/10/27 jQuery
基于iScroll实现内容滚动效果
2018/03/21 Javascript
vue项目打包之后背景样式丢失的解决方案
2019/01/17 Javascript
详解使用angular框架离线你的应用(pwa指南)
2019/01/31 Javascript
使用Vue父子组件通信实现todolist的功能示例代码
2019/04/11 Javascript
在微信小程序中使用mqtt服务的方法
2019/12/13 Javascript
Python 正则表达式(转义问题)
2014/12/15 Python
python自动裁剪图像代码分享
2017/11/25 Python
Python实现XML文件解析的示例代码
2018/02/05 Python
Python实现发送与接收邮件的方法详解
2018/03/28 Python
解决Django连接db遇到的问题
2019/08/29 Python
Python datetime 格式化 明天,昨天实例
2020/03/02 Python
简单了解django处理跨域请求最佳解决方案
2020/03/25 Python
PyCharm2020最新激活码+激活码补丁(亲测最新版PyCharm2020.2激活成功)
2020/11/25 Python
玩具反斗城西班牙网上商城:ToysRUs西班牙
2017/01/19 全球购物
YOOX台湾:意大利奢侈品电商
2018/10/13 全球购物
ZWILLING双立人法国网上商店:德国刀具锅具厨具品牌
2019/08/28 全球购物
在浏览器端如何得到服务器端响应的XML数据
2012/11/24 面试题
法律进社区实施方案
2014/03/21 职场文书
扩大国家免疫规划实施方案
2014/03/21 职场文书
企业法人授权委托书
2014/09/25 职场文书
2019同学聚会主持词
2019/05/06 职场文书