矩阵和向量点乘叉乘元素乘

embedded/2025/1/12 7:45:47/

Date: 2025.01.07

Author: Xin Pan

回顾下矩阵和向量的各种乘法。

向量

点乘

又叫做点积、内积、数量积、标量积。 a = [ a 1 , a 2 , . . . , a n ] a=[a_1,a_2,...,a_n] a=[a1,a2,...,an] b = [ b 1 , b 2 , . . . , b n ] b=[b_1,b_2,...,b_n] b=[b1,b2,...,bn]点乘的结果是一个标量,记作 a . b a.b a.b

a . b = ∑ i = 1 n a i b i = a 1 b 1 + a 2 b 2 + . . . + a n b n a.b=\sum_{i=1}^na_ib_i=a_1b_1+a_2b_2+...+a_nb_n a.b=i=1naibi=a1b1+a2b2+...+anbn

叉乘

又叫向量积、外积、叉积,叉乘, a = [ a 1 , a 2 , . . . , a n ] a=[a_1,a_2,...,a_n] a=[a1,a2,...,an] b = [ b 1 , b 2 , . . . , b n ] b=[b_1,b_2,...,b_n] b=[b1,b2,...,bn]叉乘的运算结果是一个向量,并且两个向量的叉积与这两个向量组成的坐标平面垂直,记作 a x b axb axb

a x b = ( a 2 b 3 − b 2 a 3 , − a 1 b 3 + b 1 a 3 , a 1 b 2 − b 1 a 2 ) axb=(a_2b_3-b_2a_3,-a_1b_3+b_1a_3,a_1b_2-b_1a_2) axb=(a2b3b2a3,a1b3+b1a3,a1b2b1a2)

元素乘(我自己起的名,为了方便理解)

对应位置元素相成,维度不变。

python">import numpy as npif __name__ == "__main__":a = np.array([1, 2, 3])b = np.array([4, 5, 6])print(f"Dot={np.dot(a,b)}")print(f"Cross={np.cross(a,b)}")print(f"@ times={a@b}")print(f"* times={a*b}")print(f"np.multiply={np.multiply(a,b)}")

结果

Dot=32
Cross=[-3  6 -3]
@ times=32
* times=[ 4 10 18]
np.multiply=[ 4 10 18]

矩阵

点乘

矩阵各个对应元素相乘, 这个时候要求两个矩阵必须同样大小。做的事和向量的元素乘一样的。可以直接使用星号(*)进行表示。

叉乘

矩阵的乘法就是矩阵a的第m行乘以矩阵b的第n列,各个元素对应相乘然后求和作为第m行n列元素的值。使用np.dot函数执行,也可以使用@计算。

元素乘(我自己起的名,为了方便理解)

矩阵点乘做的是一样的事情。

python">import numpy as npif __name__ == "__main__":a = np.array([[1, 2, 3], [4, 5, 6]])b = np.array([[7, 8, 9], [10, 11, 12]])print(f"Dot={np.dot(a,b.T)}")print(f"Cross={np.cross(a,b)}")print(f"@ times={a@b.T}")print(f"* times={a*b}")print(f"np.multiply={np.multiply(a,b)}")

结果

Dot=[[ 50  68][122 167]]
Cross=[[-6 12 -6][-6 12 -6]]
@ times=[[ 50  68][122 167]]
* times=[[ 7 16 27][40 55 72]]
np.multiply=[[ 7 16 27][40 55 72]]

总结

维度点乘结果叉乘结果元素乘结果
向量[1,N] 或 [N,1]向量向量
矩阵[M,N] M,N可能一致矩阵矩阵矩阵
维度点乘表示叉乘表示元素乘表示
向量[1,N] 或 [N,1]np.dot or @np.cross* or multiply
矩阵[M,N] M,N可能一致* or multiplynp.dot or @* or multiply

http://www.ppmy.cn/embedded/153236.html

相关文章

玄机-第一章 应急响应-webshell查杀的测试报告

目录 一、测试环境 二、测试目的 三、操作过程 Flag1 Flag2 Flag3 Flag4 四、结论 一、测试环境 靶场介绍:国内厂商设置的玄机靶场,以应急响应题目著名。 地址:https://xj.edisec.net/challenges/25 靶机IP:161.189.92.25…

国产编辑器EverEdit - 打印与打印预览

1 打印与打印预览 1.1 应用场景 如果需要打印代码或打印编辑的文字,而又不想使用Word/WPS等软件, EverEdit自己也提供了一个不错的打印功能。 注:业界没有几个编辑器还在“打印预览”上下功夫,EverEdit的“打印预览”功能算是文…

kvm虚拟机网络桥接和读取ip

操作步骤和桥接模式配置总结: 操作步骤总结 1. 配置桥接网络 br0 在主机上创建桥接网络 br0,并绑定物理网卡 enp1s0: sudo brctl addif br0 enp1s0 sudo ip addr flush dev enp1s0 sudo ip link set enp1s0 up sudo ip link set br0 up为桥接…

基于php的web系统漏洞攻击靶场设计与实践

web系统漏洞攻击靶场 摘 要 互联网极速发展的同时,也会带来一些安全性的风险,一些不为人知的安全问题也逐渐暴露出来。近年来,媒体不断披露了许多网络安全事故,许多网络应用程序被黑客攻击,导致内部数据外泄&#xf…

高级 SQL 技巧:提升数据查询与分析能力

一、窗口函数(Window Functions) 窗口函数是一种特殊的 SQL 函数,它能够对一组行进行计算,而不需要将这些行聚合为单个输出行。窗口函数通常与 OVER 子句一起使用,定义一个窗口,即一组行的集合。 1. 排名函数 ROW_NUMBER():为每一行分配一个唯一的序号,序号在窗口内是…

CDA数据分析师一级经典错题知识点总结(1)

1、运算符的优先级: 、>、and、or 2、销售漏斗模型主要观测粗细,斜率,流速,体形几个方面;最需要关注流速。 3、波士顿矩阵 4、订单详情表应该连接在人货场中的“货”。 5、堆叠条形图属于构成类图表。 6、在Exce…

深入探秘 ZooKeeper:架构、设计、角色与 ZNode 全解析 前言

1.ZooKeeper 分布式锁怎么实现的? ZooKeeper 是一个高效的分布式协调服务,常用于实现分布式系统中的配置管理、命名服务、分布式锁等。下面简要介绍如何使用 ZooKeeper 实现分布式锁。 分布式锁的特性 在讨论如何实现之前,先了解分布式锁应…

IntelliJ IDEA 主题插件

在 IntelliJ IDEA 中,有很多优秀的主题插件可以帮助你改变 IDE 的外观和配色方案,使得开发过程更加愉悦和高效。以下是一些非常受欢迎和实用的 主题插件,以及如何安装和使用它们的步骤: 🌟 流行主题插件推荐 1️⃣ Ma…