用numpy做矩阵运算时,少不了用到矩阵乘法。本文帮你迅速区分multiply, matmul和dot的区别。

numpy官方文档中的说明:(想深入了解可以一戳)

multiply: https://docs.scipy.org/doc/numpy/reference/generated/numpy.multiply.html

dot: https://docs.scipy.org/doc/numpy/reference/generated/numpy.dot.html

matmul:https://docs.scipy.org/doc/numpy/reference/generated/numpy.matmul.html


1. multiply(矩阵点乘)

先说说更简单的multiply,如果两个维度完全一样的矩阵用multiply做乘法,那么它们只是进行对应位置元素之间的乘法,得到一个同样维度的矩阵输出。这就是所谓的element-wise product。

import numpy as np
a = np.array([[0,1,2], [1,2,3], [3,4,5]])
b = np.array([[1,1,2], [2,2,1], [1,1,2]])
print(np.multiply(a, b))

输出:

array([[ 0, 1, 4], [ 2, 4, 3], [ 3, 4, 10]])

看这个栗子,应该十分好理解multiply。但是,如果你认为multiply只能对同样维度的矩阵之间相乘,那你就 t/o-o\ simple了。

如果3x3的矩阵和3x1的矩阵用multiply相乘会怎样呢?继续看栗子:

import numpy as np
a = np.array([[0, 1, 2], [1, 2, 3], [3, 4, 5]])
b = np.array([1, 2, 3])
print(np.multiply(a, b))

输出:

array([[ 0,  2,  6],[ 1,  4,  9],[ 3,  8, 15]])

相当于用b依次乘以a的每一行。记住,multiply是满足交换律的。(a和b互换位置结果不变)

对于3x3的矩阵a,可以用3x1的矩阵与它相乘,也可以用1x3的矩阵与它相乘。还可以用它乘以一个常数:

import numpy as np
a = np.array([[0, 1, 2], [1, 2, 3], [3, 4, 5]])
print(np.multiply(a, 3))

相当于a中各个元素乘以3。

2. dot(矩阵叉乘)

dot就是矩阵叉乘,MxN矩阵乘以NxC矩阵会得到一个MxC的矩阵。对于2D情况下的dot,等同于matmul,也等同于运算符@。

用一张图很好解释:

图片来自:https://www.cnblogs.com/luhuan/p/7925790.html

>>> a = [[1, 0], [0, 1]]
>>> b = [[4, 1], [2, 2]]
>>> np.dot(a, b)
array([[4, 1],[2, 2]])
>>> a@b
array([[4, 1],[2, 2]])

3. matmul

matmul不支持标量乘法,在2D矩阵乘法中,其效果与dot一样。

在N维矩阵乘法中(N>=3),体现出与dot不一样的算法。

>>> a = np.ones([9, 5, 7, 4])
>>> c = np.ones([9, 5, 4, 3])
>>> np.dot(a, c).shape
(9, 5, 7, 9, 5, 3)
>>> np.matmul(a, c).shape
(9, 5, 7, 3)
>>> # n is 7, k is 4, m is 3

总结

1. dot和multiply对于标量相乘,效果一样,而matmul不支持标量相乘:

>>>dot(3,3)
>>>9
>>>multiply(3,3)
>>>9
>>>matmul(3,3)
error!

2. 对于2D矩阵相乘,dot和matmul效果一样, 并且这俩都不满足交换律。通常建议优先使用matmul:

from numpy import *
a = arange(9).reshape(3,3)
b = arange(3).reshape(1,3)print(dot(b,a))
print(matmul(b,a))

输出:

[[15 18 21]]
[[15 18 21]]

numpy矩阵乘法中的multiply,matmul和dot相关推荐

  1. numpy矩阵乘法_NumPy矩阵乘法

    numpy矩阵乘法 NumPy matrix multiplication can be done by the following three methods. NumPy矩阵乘法可以通过以下三种方 ...

  2. 线性代数矩阵乘法中的行向量和列向量

    线性代数矩阵乘法中的行向量和列向量 在矩阵中有两个概念,行向量与列向量,这是从两个不同的角度看待矩阵的组成.这篇文章将从行向量和列向量两个角度来分解矩阵的乘法. 假设有两个矩阵A和B 一般矩阵的乘法分 ...

  3. Python numpy 矩阵乘法multiply()、dot()、 matmul()、‘ * ‘、‘@‘辨析

    分类: 元素相乘:multply() 矩阵相乘:dot().matmul().'@' ' * ': 是特别的.在数组操作中,作为元素相乘:在矩阵操作中作为矩阵相乘. 在数组上操作的效果: a1 = n ...

  4. numpy 矩阵乘法_一起学习Python常用模块——numpy

    关注微信公众号:一个数据人的自留地 作者介绍 知乎@王多鱼 百度的一名推荐算法攻城狮. 主要负责商品推荐的召回和排序模型的优化工作. 1 前言 Python在数据科学.机器学习.AI领等域中占据主导地 ...

  5. numpy 矩阵乘法_NumPy 运算规则总结

    1. 问题 ndarray 是 NumPy 的基础元素,NumPy 又主要是用来进行矩阵运算的.那么具体来说,ndarray 是如何进行普通矩阵运算的呢? 2. 分析 首先,在矩阵用 +-*/ 这些常 ...

  6. python numpy 矩阵乘法以及列向量与行向量乘法

    最近在熟悉python的科学计算,对于numpy的矩阵运算进行一些总结,和matlab还是很不一样的 import numpy as np 1.矩阵乘法 np.dot(a,b),但a,b都为一维矩阵的 ...

  7. matlab 和 numpy 矩阵乘法异同

    最近在用python做一点东西,发现python下面的矩阵运算和matlab是不同的,虽然之前找到了一个关于MATLAB与python在数学运算方面指令的对照表,但是感觉还是不够详细. 对照表链接:h ...

  8. python矩阵乘法 点乘_转(matlab和numpy矩阵乘法异同)

    广义的矩阵的矩阵乘法包括:矩阵相乘,矩阵点乘,向量乘法与向量点乘,内积. 对应的MATLAB有[* , .* , dot]三种运算符.分别表示的相乘,点乘和内积. 而在numpy中呢,也有*和dot两 ...

  9. MATLAB矩阵乘法为什么快,为什么MATLAB在矩阵乘法中如此之快?

    reverse_engi.. 163 这种问题反复出现,应该比Stackoverflow上的"Matlab使用高度优化的库"或"Matlab使用MKL"一次更清 ...

最新文章

  1. 比特币交易构成(二)
  2. 多个Storyboard切换
  3. 编程新手真言:不要去干追逐技术的蠢事,你只是用户,只需学会一门工具开发....
  4. 【MySQL】查看MySQL配置文件路径及相关配置
  5. html input file 修改按钮文字_html单选按钮默认选中怎么做?input标签的单选按钮用法实例...
  6. linux shell 宏定义_linux内核修炼之系统调用
  7. HDU 5832——A water problem 2016CCPC网络赛1001
  8. altium 网口差分走线长度_差分信号的优缺点及布线要求
  9. Android 博文
  10. CodeForces 297C Splitting the Uniqueness (脑补构造题)
  11. 实时时钟芯片 DS1302使用手册
  12. 联想笔记本怎么开启无线网络?
  13. Java的括号使用规则_java编码规范
  14. 整理出Android逆向系列学习进阶视频,全网疯传
  15. 计算机的软键盘在哪里,如何调出软键盘_怎么在电脑上调出软键盘_如何调出搜狗软键盘-Guide信息网...
  16. session保存和清除cookies
  17. python打印直角三角形、正方形、梯形
  18. python全栈测试开发_用于全栈自动化测试的最佳Python工具
  19. 微软在盈利前确认裁员
  20. Java 17新特性,快到起飞?惊呆了!

热门文章

  1. ArcGIS Pro地图和场景
  2. 7-360 ZJW系列之电玩积木
  3. 按照价格,书名长度从大到小或从小到大排序,使用自制排序
  4. 第一章搭建uni-app 记账小程序
  5. iOS图片拉伸技巧-李明杰分享
  6. C++挖掘程序本质(第一章C++基础)李明杰-M了个J 配套教材
  7. 2022-2027年(新版)中国果酸产业运营状况与竞争趋势分析报告
  8. 王小卤斩获iSEE全球食品创新奖百强,虎皮凤爪创新引领获认可
  9. iphone扫描文档jpg_如何使用iPhone的Notes应用程序扫描文档
  10. iOS开源加密相册Agony的实现(一)