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 encode和decode的妙用
Sep 02 Python
Python库urllib与urllib2主要区别分析
Jul 13 Python
Python发送Email方法实例
Aug 21 Python
Python中的多重装饰器
Apr 11 Python
python实现RSA加密(解密)算法
Feb 17 Python
Python中防止sql注入的方法详解
Feb 25 Python
Python3爬虫教程之利用Python实现发送天气预报邮件
Dec 16 Python
Python发送邮件实现基础解析
Aug 14 Python
python 合并多个excel中同名的sheet
Jan 22 Python
Python如何使用神经网络进行简单文本分类
Feb 25 Python
python反编译教程之2048小游戏实例
Mar 03 Python
详解Python函数print用法
Jun 18 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 时间计算问题小结
2009/01/04 PHP
提高PHP编程效率的方法
2013/11/07 PHP
destoon常用的安全设置概述
2014/06/21 PHP
php简单获取文件扩展名的方法
2015/03/24 PHP
PHP SplObjectStorage使用实例
2015/05/12 PHP
详谈配置phpstorm完美支持Codeigniter(CI)代码自动完成(代码提示)
2017/04/07 PHP
php使用curl模拟浏览器表单上传文件或者图片的方法
2018/11/10 PHP
extJs 常用到的增,删,改,查操作代码
2009/12/28 Javascript
javascript垃圾收集机制与内存泄漏详细解析
2013/11/11 Javascript
javascript unicode与GBK2312(中文)编码转换方法
2013/11/14 Javascript
Google (Local) Search API的简单使用介绍
2013/11/28 Javascript
js中文逗号转英文实现
2014/02/11 Javascript
AngularJS常见过滤器用法实例总结
2017/07/06 Javascript
js获取文件里面的所有文件名(实例)
2017/10/17 Javascript
vue this.reload 方法 配置
2018/09/12 Javascript
写一个Vue Popup组件
2019/02/25 Javascript
Seajs源码详解分析
2019/04/02 Javascript
vue 地图可视化 maptalks 篇实例代码详解
2019/05/21 Javascript
微信小程序3D轮播实现代码
2019/09/19 Javascript
vue实现页面内容禁止选中功能,仅输入框和文本域可选
2019/11/09 Javascript
基于Vant UI框架实现时间段选择器
2020/12/24 Javascript
[02:00]DOTA2英雄COSPLAY闹市街头巡游助威2015国际邀请赛
2015/08/02 DOTA
python中stdout输出不缓存的设置方法
2014/05/29 Python
python生成随机mac地址的方法
2015/03/16 Python
Python使用遗传算法解决最大流问题
2018/01/29 Python
python opencv实现gif图片分解的示例代码
2019/12/13 Python
Pytorch 实现数据集自定义读取
2020/01/18 Python
关于python的缩进规则的知识点详解
2020/06/22 Python
python Timer 类使用介绍
2020/12/28 Python
装修设计师求职信
2014/02/26 职场文书
党员承诺践诺书
2014/05/20 职场文书
交通事故委托书范本
2014/09/28 职场文书
优秀班组事迹材料
2014/12/24 职场文书
教师工作决心书
2015/02/04 职场文书
三八节活动简报
2015/07/20 职场文书
Nginx限流和黑名单配置
2022/05/20 Servers