numpy中矩阵乘法

 在Python的 Numpy模块中有很多关于矩阵乘法的方法,其中重点是 矩阵的点乘和叉乘,需要区分出来。

 

矩阵的点乘

就是矩阵各个对应元素相乘, 这个时候要求两个矩阵必须同样大小
在 numpy 模块中 矩阵点乘是通过  multiply 函数或 * 运算符来实现

 

import numpy as np
m = np.array([[1,2,3],[4,5,6]])

n= np.array([[1,2,3],[4,5,6]])

'''
m=
[[1, 2, 3],
[4, 5, 6]]

n=
[[1, 2, 3],
[4, 5, 6]]
'''

print( m*n)

'''
输出:
[[ 1  4  9]
 [16 25 36]]
 '''

print(np.multiply(m,n))

'''
输出:
[[ 1  4  9]
 [16 25 36]]
 '''

 

矩阵的叉乘

 

要获得矩阵乘积,你可以使用 Numpy 的 matmul  函数 或者 dot函数。 此时要求前面矩阵的列数等于后面矩阵的行数

对于 matmul 函数 和 dot 函数 在二维矩阵乘法上结果相同,但是对于多维矩阵的结果 就不一定相同。

 

 a=np.array([[1,2,3],[4,5,6]])  # 2行 3列 

 b=np.array([[1,2],[3,4],[5,5]]) # 3行 2列


'''
a=

[[1, 2, 3],
 [4, 5, 6]]


b=

[[1, 2],
 [3, 4],
 [5, 5]]

'''




print(np.dot(a,b))




'''
输出:

[[22, 25],
  [49, 58]]

'''



print(np.matmul(a,b))




'''

输出:

[[22, 25],
  [49, 58]]

'''

 

 

 

 

 

 

### Numpy 中多维矩阵乘法 在处理更高维度的数据结构时,`np.dot()` 函数同样适用。对于三维或多维数组而言,`dot` 操作会沿着最后两个轴执行矩阵乘法。 #### 示例:三阶张量间的 `dot` 运算 考虑两个形状分别为 `(2, 3, 4)` 和 `(2, 4, 5)` 的三阶张量 A 和 B: ```python import numpy as np # 创建随机数填充的三阶张量 A = np.random.rand(2, 3, 4) B = np.random.rand(2, 4, 5) # 执行 dot 运算 C = np.dot(A, B) print(f"C.shape={C.shape}") ``` 上述代码片段展示了如何利用 `np.dot()` 对高维数据进行操作[^1]。这里的结果 C 将是一个形状为 (2, 3, 5) 的新张量,这表明第一个维度上的元素被独立对待,而其余两维则按照标准矩阵乘法规则组合在一起。 当涉及到更复杂的场景比如四维及以上的情况时,理解广播机制变得尤为重要。广播允许不同大小但兼容的数组之间按元素方式相加减或做其他二元运算。然而,在使用 `np.dot()` 计算多维数组间的产品时,只有最后一个和倒数第二个维度参与实际的矩阵乘法过程;其它前置维度需保持一致以便正确应用广播规则[^2]。 为了进一步澄清这一点,下面给出一个具体例子来说明四个维度下的情况: ```python D = np.ones((6, 7, 8)) E = np.eye(8) F = np.dot(D,E) print(F.shape) # 输出应为 (6, 7, 8), 表明前两维未受影响 ``` 在这个案例里,尽管 E 是二维单位方阵,但由于其内部尺寸匹配良好(即都等于 8),因此可以直接与任意数量级相同长度的最后一维相结合而不改变原有结构特性[^3]。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值