向量和矩阵的点乘和叉乘_矩阵叉乘_龙王.*?的博客-程序员秘密

技术标签: math  numpy  

向量


定义:向量是由N个实数组成的一行N列或N行一列的的数组。

  • 点乘:又叫做点积、内积、数量积、标量积,向量a[a1,a2,...,an]和向量b[b1,b2b...,bn]点乘的结果是一个标量,记作a.b

几何解释:a.b = |a| |b| cos \theta,故而点乘可以计算出两个向量的夹角,且向量垂直,点乘结果为零。

  • 叉乘:又叫向量积、外积、叉积,叉乘,向量a[x1,y1,z1]和向量b[x2,y2,z2]叉乘的运算结果是一个向量,并且两个向量的叉积与这两个向量组成的坐标平面垂直,记作axb

计算方式:利用行列式方式,设i[1,0,0],j[0,1,0],k[0,0,1],则如下图:

几何解释:axb =  |a| |b| sin \Theta,故两个向量平行,则其叉乘等于零。

几何意义:叉积的长度|a×b|可以解释成这两个叉乘向量ab共起点时,所构成平行四边形的面积。

Numpy实现向量的点乘和叉乘

点乘需要用到numpy库的dot函数,得到一个标量。叉乘需要用到numpy库的cross函数。

In [1]: import numpu as np   
In [2]: a = np.array([1,2,3]) 
In [3]: b = np.array([2,2,3])   
In [4]: np.dot(a,b)  
Out[4]: 15
In [5]: np.cross(a,b)                                                                                                                                            
Out[5]: array([ 0,  3, -2])

矩阵直接使用*相乘的处理方式是向量对应位置相乘,维数不变,它与np.multiply函数效果一样,均是元素相乘。

In [6]: a*b               
Out[6]: array([2, 4, 9])
In [7]: np.multiply(a,b)                                                                
Out[7]: array([2, 4, 9])

矩阵


定义:是一个按照长方阵列排列的复数实数集合。

  • 矩阵点乘:是矩阵各个对应元素相乘, 这个时候要求两个矩阵必须同样大小。
  • 矩阵叉乘:矩阵的乘法就是矩阵a的第m行乘以矩阵b的第n列,各个元素对应相乘然后求和作为第m行n列元素的值。

Numpy实现矩阵的点乘和叉乘

矩阵的点乘直接使用*号即可,也可以使用 numpy库的multiply函数,叉乘使用dot函数,这与向量相反

In [1]: a = np.array([[1,2],[3,4]])                 
In [2]: b = np.array([[5,6],[7,8]]) 
In [3]: a*b                                                                                
Out[3]: 
array([[ 5, 12],
       [21, 32]])
In [4]: np.dot(a,b)                                                
Out[4]: 
array([[19, 22],
       [43, 50]])
In [34]: np.multiply(a,b)                                                                                                                                         
Out[34]: 
array([[ 5, 12],
       [21, 32]])

总结Numpy库


numpy库的对象有数组和矩阵,两者看起来长得差不多,但在性质、运算上有很大不同。可通过array函数mat函数相互转化。

  • dot函数

对于秩为1的数组,执行对应位置相乘,然后再相加,等价于向量的点乘

对于秩不为1的二维数组,执行矩阵乘法运算,等价于矩阵的叉乘

  • multiply函数

数组和矩阵对应位置相乘,输出与相乘数组/矩阵的大小一致,效果上与运算符*对数组效果一样。

  • 运算符*号

对数组执行对应位置相乘,等价于multiply函数

对矩阵执行矩阵乘法运算,等价于dot函数

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/wzyaiwl/article/details/106310705

智能推荐

【ansys workbench】怎么修改mechanical的单位?_workbench单位在哪里改_键盘即钢琴的博客-程序员秘密

比如,mechanical模块的单位在这里。修改单位,可以在workbench中修改。也可以在各个模块中修改各模块的单位。

arcgis根据矢量范围统计栅格数据众数、最大值、均值、中位数、最小值、少数等_arcgis怎么求栅格数据的中位数_GIS哼哈哈的博客-程序员秘密

像元统计数据根据多个栅格数据计算每个像元的统计数据。可用的统计数据有:众数、最大值、均值、中位数、最小值、少数、范围、标准差、总和及变异度。https://desktop.arcgis.com/zh-cn/arcmap/10.3/tools/spatial-analyst-toolbox/an-overview-of-the-local-tools.htm...

tslib和qt在君正平台上的搭建_君正 qt_chenyong19870904的博客-程序员秘密

1.安装tsliba.下载tslib和相关工具最新tslib下载地址:https://github.com/kergoth/tslib#readme发现此地址下载的tslib比tslib1.4.tar.gz要新。sudo apt-get install autoc

[业界资讯]8月编程语言榜:.Net前景如何?_weixin_30477797的博客-程序员秘密

Tiobe近日公布了2009年8月的编程语言排行榜本期榜单中有Objective-CHE第一次进入前二十名并取代之前的Lua,而Java、C、C++依然以绝对优势占据前三甲的位置.本期我们将重点关注微软的.NET平台,以及新近推出的F#、Small Basic语言.C# 4.0借Visual Studio 2010 Beta1发力 很多人将C#认为是微软对Java的反击,我们从C...

SPOJ DQUERY - D-query [树状数组+离线 || 主席树 ]【数据结构】_Tabris_的博客-程序员秘密

题目连接:http://www.spoj.com/problems/DQUERY/—————————————————————————————————————————— DQUERY - D-query #sorting #tree English Vietnamese Given a sequence of n numbers a1, a2, …, an and a number of d

基于python脚本的遥感影像样例模板批量生产以及样本绘制_点PY的博客-程序员秘密

# -*- coding: utf-8 -*-from osgeo import ogrimport os, sysimport numpy as npimport cv2import numpyimport gdalimport timeimport globfrom osgeo import osrdef del_file(path): for i in os.listdir(path): path_file = os.path.join(path, i)

随便推点

信佑linux教程,迅闪/信佑Linux无盘(二代虚拟盘)常用命令_yang31995617的博客-程序员秘密

1.升级rpm包命令:rpm -ivh –forceHintdisk-4.0-130820.x86_64.rpm//红色字为你的rpm升级包名字;2.升级内核ISO命令:upisoKernel-3.4.28-130820.iso//红色字为你的ISO包名字;3.hintsys命令配置软阵列,配置网络(无盘服务器名字,ip,网关),重启关闭无盘...

WinDBG 技巧:设断点命令详解(bp, bu, bm, ba 以及bl, bc, bd, be)_云深互联的博客-程序员秘密

WinDBG 提供了多种设断点的命令:bp, bu, bm, ba  bp 命令是在某个地址下断点, 可以 bp 0x7783FEB 也可以 bp MyApp!SomeFunction 。 对于后者,WinDBG 会自动找到MyApp!SomeFunction 对应的地址并设置断点。 但是使用bp的问题在于:1)当代码修改之后,函数地址改变,该断点仍然保持在相同位置,不一定继续有效; 2)

ORA-08102: 未找到索引关键字_cuandou3689的博客-程序员秘密

在执行一个procedure的时候出现如下logORA-08102: 未找到索引關鍵字,obj# 52235,dba 293728808 (2)SQL> select * from dba_objects w...

quay.io国内无法访问,解决Kubernetes应用flannel失败,报错Init:ImagePullBackOff_quay.io/coreos/flannel_普通Gopher的博客-程序员秘密

按照搭建Kubernetes时官网给的命令kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml部署完成时查看[[email protected] flannel]# kubectl get pod -n kube-systemNAME ...

SOP8内置mos极少外围30V3ADC-DC降压应用 车充等_yucan-13760366207的博客-程序员秘密

4~30V的宽输入电压范围内可实现 2.4A的连续电流输出。具有优秀的恒压/恒流(CC/CV)特性 采用电流模式的环路控制原理,实现了快速的动态响应。NS6332 工作开关频率为 130kHz,具有良好的 EMI 特性。另外,芯片包含多重保护功能:过温保护,输出短路保护和输入欠压/过压保护等。采用 SOP8 的标准封装。固定输出5V 不限流应用图 ...

Android百度地图(四):百度地图运动轨迹纠偏、去噪、绑路之百度鹰眼_怀化纱厂球迷的博客-程序员秘密

上一篇文章介绍了地图画轨迹的基本原理和实现。不难发现,当位置处于建筑物密集区、桥梁、高架桥下,gps信号较差时,画出来的轨迹效果会比较差。即使是在空旷地带,也难免会出现gps漂移的情况而造成轨迹的偏差。这时就需要我们对位置点进行纠偏、去噪、抽稀、绑路操作。百度鹰眼sdk则提供了相应的api,本篇文章将介绍如何使用百度鹰眼sdk画出效果相对较好的轨迹。先来看看效果图1.百度地图(三)文章

推荐文章

热门文章

相关标签