点积 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)

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

原文链接:https://blog.csdn.net/qq_42067550/article/details/105041432

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

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

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

  2. java 矩阵求秩_线性代数精华3——矩阵的初等变换与矩阵的秩

    矩阵的初等变换这个概念可能在很多人听来有些陌生,但其实我们早在初中的解多元方程组的时候就用过它.只不过在课本当中,这种方法叫做消元法.我们先来看一个课本里的例子: 假设我们要解这个方程,怎么做呢? 首 ...

  3. 两个3×3矩阵乘法例题_两个3×3矩阵相乘 三个矩阵相乘从左向右算还是从右算起...

    两个三乘三矩阵相乘怎么算,在线等 设A为m*p的矩阵,B为p*n的矩阵,那么称m*n的矩阵C为矩阵A与B的乘积,记作C=AB ,其中矩阵C中的第i行第j列元素可以表示为: 例如: 扩展资料: 注意事项 ...

  4. python如何叉乘_向量点乘与向量叉乘

    向量的点积与向量的叉乘应该是高中时解析几何的知识,很久没有用,已经回忆不起来了,最近接触到了,一脸茫然,在此复习下: 1. 向量的点乘 1.1 释义 向量的点乘,也叫向量的内积.数量积,对两个向量执行 ...

  5. python矩阵乘法分治_分治法实现矩阵乘法

    #include #include #include #include using namespace std; int *InitMatrix(int row,int col);//初始化 void ...

  6. Python numpy中 两个向量相乘得到矩阵

    参考 https://stackoverflow.com/questions/28578302/how-to-multiply-two-vector-and-get-a-matrixhttps://b ...

  7. python 服务端渲染_客户端渲染和服务器渲染的区别

    我们都知道,网页上的很多内容之所以能那么丰富,是因为大量的css.js去渲染出这个页面.那么他们是如何渲染的呢?那么就要说到我们本文的两种渲染方式了,即客户端渲染和服务端渲染. 正文 本文将分别讲述两 ...

  8. 矩阵键盘程序_独立按键与矩阵按键

    一.独立按键原理 按键在闭合和断开时,触点会存在抖动现象 硬件消抖电路 独立按键控制程 二.独立按键控制程序 #include "reg52.h" typedef unsigned ...

  9. python富翁与穷人_穷人和富人最根本的区别

    穷人和富人最根本的区别__<> - - 学习别人不代表不可以,目的是为了超越别人 - - 本人觉得这边文章,观点新颖,特此给大家学习下: - -  bayaim .2017年6月26日10 ...

最新文章

  1. 硬核!Python 四种变量的代码对象和反汇编分析
  2. 今天分享个用Python爬虫爬取Bilibili弹幕的小例子解析
  3. Visual C++ MFC/ATL开发-高级篇(一)
  4. 浅析商城网站建设需要注意哪些细节内容呢?
  5. centos 6.5 配置LDAP服务器+客户端!
  6. string包含某个字符串_Tcl字符串操作基础2
  7. JavaScript-使用WeakMap创建对象的私有属性
  8. K3 LEDE固件更改FRP客户端版本
  9. python内存管理方法_Python 内存管理大揭秘
  10. python-面向对向-实例方法的继承
  11. 初步了解关于js跨域问题
  12. Logstash+Kibana+多ElasticSearch集群部署
  13. mysql ignore-columns_坑 - 当insert ignore遇到not null
  14. php5.2、5.3和5.4,Apache多虚拟主机多版本PHP(5.2+5.3+5.4)共存运行配置
  15. 技术提升为管理,最重要的能力是什么?
  16. 优化element ui中的弹框样式
  17. oracle相同sql执行计划不同,相同的SQL 在正式和测试环境中执行计划的不同
  18. 学计算机连系统都不会装,Win7系统安装不了iTunes该如何解决-电脑自学网
  19. python批处理删除文件夹中以xxx后缀名结尾的文件
  20. 山东网通/电信用户DNS设置

热门文章

  1. Hibernate之Criteria查询及注解
  2. 笔记本电脑能上微信不能访问网址
  3. Java企业级开发框架(三):changelog——0.6.0-SNAPSHOT
  4. C语言二分查找递归与非递归实现
  5. 关于Type-C扩展坞插网线干扰局域网的解决方案
  6. mysql 5.5 查看事件_MySQL5.5如何事件调度
  7. ZJOI2017 Day1 四日游
  8. 关于茶的几个常识性流言,你被误导了几个?
  9. 媒体网关的开放式结构设计考虑
  10. 深度学习从入门到精通