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

打印 上一主题 下一主题

主题 1029|帖子 1029|积分 3087

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?立即注册

x
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=1n​ai​bi​=a1​b1​+a2​b2​+...+an​bn​
叉乘

又叫向量积、外积、叉积,叉乘,                                   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=(a2​b3​−b2​a3​,−a1​b3​+b1​a3​,a1​b2​−b1​a2​)
元素乘(我自己起的名,为了方便理解)

对应位置元素相成,维度稳定。
  1. import numpy as np
  2. if __name__ == "__main__":
  3.     a = np.array([1, 2, 3])
  4.     b = np.array([4, 5, 6])
  5.     print(f"Dot={np.dot(a,b)}")
  6.     print(f"Cross={np.cross(a,b)}")
  7.     print(f"@ times={a@b}")
  8.     print(f"* times={a*b}")
  9.     print(f"np.multiply={np.multiply(a,b)}")
复制代码
结果
  1. Dot=32
  2. Cross=[-3  6 -3]
  3. @ times=32
  4. * times=[ 4 10 18]
  5. np.multiply=[ 4 10 18]
复制代码
矩阵

点乘

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

矩阵的乘法就是矩阵a的第m行乘以矩阵b的第n列,各个元素对应相乘然后求和作为第m行n列元素的值。利用np.dot函数实行,也可以利用@计算。
元素乘(我自己起的名,为了方便理解)

和矩阵点乘做的是一样的事情。
  1. import numpy as np
  2. if __name__ == "__main__":
  3.     a = np.array([[1, 2, 3], [4, 5, 6]])
  4.     b = np.array([[7, 8, 9], [10, 11, 12]])
  5.     print(f"Dot={np.dot(a,b.T)}")
  6.     print(f"Cross={np.cross(a,b)}")
  7.     print(f"@ times={a@b.T}")
  8.     print(f"* times={a*b}")
  9.     print(f"np.multiply={np.multiply(a,b)}")
复制代码
结果
  1. Dot=[[ 50  68]
  2. [122 167]]
  3. Cross=[[-6 12 -6]
  4. [-6 12 -6]]
  5. @ times=[[ 50  68]
  6. [122 167]]
  7. * times=[[ 7 16 27]
  8. [40 55 72]]
  9. np.multiply=[[ 7 16 27]
  10. [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
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

吴旭华

论坛元老
这个人很懒什么都没写!
快速回复 返回顶部 返回列表