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

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=(a2b3−b2a3,−a1b3+b1a3,a1b2−b1a2)

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

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

python 复制代码
import numpy as np

if __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)}")

结果

latex 复制代码
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 np

if __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)}")

结果

latex 复制代码
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 multiply np.dot or @ * or multiply
相关推荐
Doc.S5 分钟前
【保姆级教程】在AutoDL容器中部署EGO-Planner,实现无人机动态避障规划
人工智能·python·信息可视化·机器人
Predestination王瀞潞18 分钟前
Python3:Eighth 函数
开发语言·python
蒋星熠28 分钟前
多模态技术深度探索:融合视觉与语言的AI新范式
人工智能·python·深度学习·机器学习·分类·数据挖掘·多分类
xier_ran1 小时前
Python从入门到精通:(2)Python 核心进阶教程从数据结构到面向对象
linux·windows·python·microsoft
程序员三藏1 小时前
接口自动化测试框架搭建详解
自动化测试·软件测试·python·测试工具·职场和发展·测试用例·接口测试
skywalk81631 小时前
老显卡老cpu用vllm推理大模型失败Intel(R) Xeon(R) CPU E5-2643 v2
人工智能·pytorch·python·vllm
Olafur_zbj2 小时前
【IC】NoC设计入门 --交换矩阵
线性代数·矩阵
程序员爱钓鱼2 小时前
Python编程实战:文件读写(文本/二进制)详解与实战
后端·python·ipython
百锦再2 小时前
第6章 结构体与方法
android·java·c++·python·rust·go
TheInk2 小时前
python学习笔记之Python基础教程(crossin全60课)
笔记·python·学习