矩阵三种乘积的区别

本文介绍了NumPy中矩阵乘法的三种形式:点乘(dot)、哈达马积(Hadamard product)和克罗内克积(Kronecker Product)。点乘使用dot()函数,要求矩阵的列数与行数匹配。哈达马积则是对应元素相乘,Python中使用*操作符实现,允许不同尺寸的矩阵相乘。而克罗内克积在Python中不常见,通常用于特定的数学计算。通过实例展示了每种乘法的使用方法和结果。
摘要由CSDN通过智能技术生成

在使用 NumPy 过程中遇到 矩阵乘积有些不清楚,查询资料做个笔记。

矩阵乘积分为三种,常用的就是第一种和第二种,以下结果以python代码为准,和线性代数有出入

矩阵乘积
百度百科:

设A为 m * p 的矩阵,B为 p* n 的矩阵,那么称 A * B 的矩阵C为矩阵A与B的乘积

python:

python称为矩阵点乘,写法为 A.dot(B) ,计算方式如下,两者相同
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
python 测试:

a1 = np.array([[1,2,3],[4,5,6]]) # a1为2*3矩阵
a2 = np.array([[1,2],[3,4],[5,6]]) # a2为3*2矩阵
print(a1.dot(a2))
"""
[[22 28]
 [49 64]]
"""

如下所示:
在这里插入图片描述

哈达马积(Hadamard product)
百度百科:

设矩阵 A 和矩阵 B 都是 m*n 的矩阵,及行列相同,则称 A * B 的矩阵 C 为哈达马积,

在这里插入图片描述

python:

python 中称为 矩阵乘积 ,写法为 A * B

区别:

在python中,不要求 A,B 矩阵 都是 mn 矩阵,python还支持 A mn 矩阵,B为 1*n 阶矩阵

python 测试

A、B 矩阵 都是 2*3 阶矩阵,对应位置相乘, a * b = b * a

a = np.array([[4, 5, 6], [1, 2, 3]])
b = np.array([[6, 5, 4], [3, 2, 1]])
print(a*b)
"""
[[24 25 24]
 [ 3  4  3]]
"""

A 33 阶矩阵,B 为 13 阶矩阵,对应位置相乘, a * b = b * a

a = np.array([[1, 2, 3], [4, 5, 6]])
b = np.array([[7, 8, 9]])

print(a * b)
"""
[[ 7 16 27]
 [28 40 54]]
"""
克罗内克积(Kronecker Product)

克罗内克积是两个任意大小的矩阵间的运算,符号记作⊗。克罗内克积也被称为直积或张量积

该乘积 python 不涉及,没看到相关方法
在这里插入图片描述

总结

在 python 中,点乘用的 dot() 方法,A * B 需要保证A矩阵列数等于B矩阵行数, 乘用的 * 符号

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值