点积 dot product

点积是针对向量而言的。
我们可以理解为维度[n,1]或者[1,n],一维的矩阵。
在python中,我们设置一个array,查看其shape:

>>> import numpy as np
>>> a = np.array([1,2,3,4,5])
>>> a
array([1, 2, 3, 4, 5])
>>> a.shape
(5,)

可以看到维度是(5, ),并不是(5,1)或者(1,5)。
这东西刚接触的时候很容易搞不清楚。我的理解是,python把这个认定为是向量。
而向量的5其实在空间中可以认为是5个维度的意思,每个维度上有一个值。
而两个向量的点积:

>>> b = np.array([2,2,3,3,1])
>>> b
array([2, 2, 3, 3, 1])
>>> b.shape
(5,)
>>> c = np.dot(a,b)
>>> c
32

就是每个元素相乘之后求和。

乘积 product

乘积的概念是针对矩阵来说的。
所以需要满足维度匹配才可以进行乘积,即矩阵乘法。
前面矩阵的列元素个数,需要等于后面矩阵行元素个数。
即维度 [n , m] 和 [m , k] 这两个矩阵才可以乘积。

>>> d = np.matrix([[1,2,3],[2,3,4]])
>>> d
matrix([[1, 2, 3],[2, 3, 4]])
>>> e = np.matrix([[1,2],[2,3],[4,5]])
>>> e
matrix([[1, 2],[2, 3],[4, 5]])
>>> f = np.dot(d,e)
>>> f
matrix([[17, 23],[24, 33]])

[2 , 3] 的矩阵和 [3 , 2] 的矩阵乘积得到一个 [2 , 2] 的矩阵。
另外,我们不用 matrix 而改用 array 也是可以的:

>>> d_2 = np.array([[1,2,3],[2,3,4]])
>>> d_2
array([[1, 2, 3],[2, 3, 4]])
>>> e_2 = np.array([[1,2],[2,3],[4,5]])
>>> e_2
array([[1, 2],[2, 3],[4, 5]])
>>> f_2 = np.dot(d_2,e_2)
>>> f_2
array([[17, 23],[24, 33]])

区别

如果我们把两个 array 扩展一个维度出来:

>>> a
array([1, 2, 3, 4, 5])
>>> a_reshape = a.reshape([5,1])
>>> a_reshape
array([[1],[2],[3],[4],[5]])
>>> a_reshape.shape
(5, 1)

这个时候 array 维度变了。

>>> b
array([2, 2, 3, 3, 1])
>>> b_reshape = b.reshape([5,1])
>>> b_reshape
array([[2],[2],[3],[3],[1]])
>>> b_reshape.shape
(5, 1)
>>> a_b = np.dot(a,b)
>>> a_b
32

有意思的是,这里(5,1)和(5,1)的维度可以直接做乘积。这应该是python为了便利而扩展的功能吧。
如果我们把b的维度变为 (1,5),结果还是一样的:

>>> b_reshape_2 = b.reshape([1,5])
>>> a_b_2 = np.dot(a,b)
>>> a_b_2
32
>>> b_reshape_2.shape
(1, 5)

如果乘积中一个矩阵超过了一维,那就要做维度匹配了。

向量点积和矩阵乘积的区别相关推荐

  1. python矩阵和向量乘积_向量点积和矩阵乘积的区别

    点积 dot product 点积是针对向量而言的. 我们可以理解为维度[n,1]或者[1,n],一维的矩阵. 在python中,我们设置一个array,查看其shape: >>> ...

  2. 将矩阵转为一行_矩阵与矩阵乘积简介

    作者|Hadrien Jean 编译|VK 来源|Towards Data Science 原文链接:https://towardsdatascience.com/introduction-to-ma ...

  3. numpy np.matmul()(两个数组的矩阵乘积)

    from multiarray def matmul(a, b, out=None): # real signature unknown; restored from __doc__"&qu ...

  4. numpy dot()函数(两个数组的点积)(对于二维阵列,它是矩阵乘积)

    From multiarray.py def dot(a, b, out=None): # real signature unknown; restored from __doc__"&qu ...

  5. CBOW模型正向传播、矩阵乘积层实现

    把矩阵乘积称为MatMul节点: 下面这个图表示矩阵乘积y=xW的计算图 .因为考虑了mini-batch 处理,假设x中保存了N个数据.此时x .W.y 的形状分别是 N×D.D×H .N×H . ...

  6. Python矩阵计算类:计算矩阵加和、矩阵乘积、矩阵转置、矩阵行列式值、伴随矩阵和逆矩阵

    最近在Python程序设计中遇到一道设计矩阵计算类的题目,原题目要求计算矩阵加和和矩阵乘积,而我出于设计和挑战自己的目的,为自己增加难度,因此设计出矩阵计算类,不仅可以求出矩阵加和和矩阵乘积,还能计算 ...

  7. 11 - 向量微分、矩阵微分以及基于雅克比矩阵求导数

    文章目录 1. 手推机器学习-矩阵求导 1.1 绪论 1.2 ML中为什么需要矩阵求导 1.3 向量函数与矩阵求导初印象 1.4 矩阵求导-YX拉伸术 1.5 常见矩阵求导公式举例 1.6 求导细节补 ...

  8. C语言数组使用、数组相关的宏定义剖析,及矩阵乘积、杨辉三角实例

         数组一直是编程语言学习中需要重点掌握的部分,它是最基本的数据结构类型,是构成字符串及其他许多重要构造结构的基础.相对许多其他高级语言来说,C语言对数组本身提供的支持并不太多,尤其是不支持动态 ...

  9. Spark机器学习MLlib系列1(for python)--数据类型,向量,分布式矩阵,API

    Spark机器学习MLlib系列1(for python)--数据类型,向量,分布式矩阵,API 关键词:Local vector,Labeled point,Local matrix,Distrib ...

最新文章

  1. Pytorch入门.pptx
  2. python主流编程语言_对5种主流编程语言的吐槽!
  3. 建立能持续处理请求的Server端改造
  4. linux vi行尾总是显示颜色,【转载】Linux 下使用 vi 没有颜色的解决办法
  5. Centos7 下定义MariaDB源Yum安装最新版本的MariaDB
  6. 拼多多市值一夜蒸发759亿元,黄峥丝毫不慌...
  7. linux下tar gz bz2 tgz z等众多压缩文件的解压方法
  8. [原创]一个shell小案例
  9. Excel导入SQL数据库出现的问题
  10. CamtasiaStudio如何导出视频上传优酷实现高清
  11. 我自己对于Netty的疑问
  12. idea运行前端项目
  13. ApacheCN 活动汇总 2019.7.5
  14. tp交换机管理页面_tplink交换机怎样设置
  15. linux下打字软件,桌面应用|与 Linux 一起学习:学习打字
  16. 2022-05-08 基于卷积神经网络ResNet的车型识别(实验)
  17. 如何注册开通真正支付全世界190个国家和地区,多种货币(美元等)支付和收款国际版paypal帐户
  18. 小猫爪:嵌入式小知识10-I2S,TDM,PCM等音频格式详解
  19. android 查找联系人方法(支持首拼,全拼,英文)
  20. java 报错 定位,问题定位分享(2)spark任务一定几率报错java.lang.NoSuchFieldError: HIVE_MOVE_FILES_THREAD_COUNT...

热门文章

  1. 2021年安全员-C证报名考试及安全员-C证考试总结
  2. 荣耀史上最强直播阵容 荣耀9发布会直播地址出来啦
  3. AM系列微机保护测控装置 安科瑞 张宇洁
  4. 王者荣耀服务器信息共享,王者荣耀账号时长共享是怎么回事 账号时长共享具体规则...
  5. pycharm奇淫技巧
  6. Meizu M8 SDK开发初体验
  7. Monkey测试4——Monkey命令行可用的全部选项
  8. Python 单下划线开头、双下划线开头
  9. 使用mysql实现1-12月份查询统计
  10. 趋高智能之运动控制软件伺服控制多轴