向量和矩阵运算及Numpy中对应方法

一、总结

向量的内积,即点乘:np.dot(a,b)等价于a@b
向量的外积,即叉乘:np.cross(a,b)
向量元素对应位置相乘np.multiply(a,b)等价于a*b


矩阵点乘,即对应元素相乘:np.multiply(a,b)等价于a*b
矩阵叉乘,即矩阵乘法规则运算:np.dot(a,b)等价于a@b

二、向量

2.1 向量的内积

向量的点乘,也叫向量的内积、数量积,对两个向量执行点乘运算,就是对这两个向量对应位一一相乘之后求和的操作,点乘的结果是一个标量。
对于向量 a = [ a 1 , a 2 , ⋯   , a n ] \bold a=[a_1, a_2, \cdots, a_n] a=[a1,a2,,an]和向量 b = [ b 1 , b 2 , ⋯   , b n ] \bold b=[b_1, b_2, \cdots, b_n] b=[b1,b2,,bn] a ⋅ b = a 1 b 1 + a 2 b 2 + ⋯ + a n b n \bold a \cdot \bold b=a_1b_1+a_2b_2+ \cdots + a_nb_n ab=a1b1+a2b2++anbn这里要求一维向量a和向量b的行列数相同。

内积对应numpy中的函数为:np.dot(a,b)a@b,且两种方式等价

In [34]: a = np.array([1, 2, 3])
In [35]: b = np.array([6, 7, 8])
In [36]: np.dot(a, b)
Out[36]: 44

2.2 向量的外积

两个向量的叉乘,又叫向量积、外积、叉积,其运算结果是一个向量而不是一个标量。并且两个向量的叉积与这两个向量组成的坐标平面垂直。
外积的几何意义:在三维几何中,向量a和向量b的叉乘结果是一个向量,更为熟知的叫法是法向量,该向量垂直于a和b向量构成的平面。
在这里插入图片描述
向量的外积,对应numpy中np.cross()方法:

In [38]: a = np.array([1, 2, 3])
In [39]: b = np.array([6, 7, 8])
In [40]: np.cross(a, b)
Out[40]: array([-5, 10, -5])

2.3 向量哈德玛乘积

向量哈德玛乘积(Hadamard积),元素对应位置相乘所得到的新向量,用用 ⊙ \odot 或者 ∘ \circ 表示:

对于向量 a = [ a 1 , a 2 , ⋯   , a n ] \bold a=[a_1, a_2, \cdots, a_n] a=[a1,a2,,an]和向量 b = [ b 1 , b 2 , ⋯   , b n ] \bold b=[b_1, b_2, \cdots, b_n] b=[b1,b2,,bn] a ⊙ b = a 1 b 1 + a 2 b 2 + ⋯ + a n b n \bold a \odot \bold b=a_1b_1+a_2b_2+ \cdots + a_nb_n ab=a1b1+a2b2++anbn

向量哈德玛乘积,对应numpy中的np.multiply(a,b)a*b

In [42]: a = np.array([1, 2, 3])
In [43]: b = np.array([6, 7, 8])
In [44]: np.multiply(a, b)
Out[44]: array([ 6, 14, 24])

2.4 示例

三、矩阵

3.1 矩阵乘法(矩阵叉乘)

矩阵叉乘中, 前者的列数=后者的行数
[ w 11 w 12 w 21 w 22 w 31 w 32 ] 3 × 2 × [ x 11 x 12 x 21 x 22 ] 2 × 2 = [ w 11 x 11 + w 12 x 21 w 11 x 12 + w 12 x 22 w 21 x 11 + w 22 x 21 w 21 x 12 + w 22 x 22 w 31 x 11 + w 32 x 21 w 31 x 12 + w 32 x 22 ] \begin{bmatrix} w_{11} & w_{12} \\ w_{21} & w_{22} \\ w_{31} & w_{32} \\ \end{bmatrix}_{3\times 2} \times \begin{bmatrix} x_{11} & x_{12} \\ x_{21} & x_{22} \\ \end{bmatrix}_{2\times 2}=\begin{bmatrix} w_{11}x_{11} + w_{12} x_{21}& w_{11}x_{12} + w_{12}x_{22} \\ w_{21}x_{11} + w_{22} x_{21}& w_{21}x_{12} + w_{22}x_{22} \\ w_{31}x_{11} + w_{32} x_{21}& w_{31}x_{12} + w_{32}x_{22} \end{bmatrix} w11w21w31w12w22w32 3×2×[x11x21x12x22]2×2= w11x11+w12x21w21x11+w22x21w31x11+w32x21w11x12+w12x22w21x12+w22x22w31x12+w32x22
numpy中,对应方法是:np.dot(a,b)等价于a@b,需要注意的是这里要注意的是,np.dot(A, B)np.dot(B, A)的值可能不一样。

In [12]: import numpy as np
In [13]: A = np.asarray([[1, 2], [3, 4], [5, 6]])
In [14]: A.shape
Out[14]: (3, 2)

In [15]: B = np.asarray([[1, 2, 3], [4, 5, 6]])
In [16]: B.shape
Out[16]: (2, 3)

In [17]: np.dot(A, B)
Out[17]:
array([[ 9, 12, 15],
       [19, 26, 33],
       [29, 40, 51]])
       
In [18]: np.dot(B, A)
Out[18]:
array([[22, 28],
       [49, 64]])

3.2 矩阵点乘(矩阵哈达玛积)

矩阵点乘要求两矩阵为同型矩阵(即两个矩阵的行数与列数都相同),对应元素相乘。

[ w 11 w 12 w 13 w 21 w 22 w 23 ] 2 × 3 ⊙ [ x 11 x 12 x 13 x 21 x 22 x 23 ] 2 × 3 = [ w 11 x 11 w 12 x 12 w 13 x 13 w 21 x 21 w 22 x 22 w 23 x 23 w 31 x 31 w 32 x 32 w 33 x 33 ] \begin{bmatrix} w_{11} & w_{12} & w_{13}\\ w_{21} & w_{22} & w_{23}\\ \end{bmatrix}_{2\times 3} \odot \begin{bmatrix} x_{11} & x_{12} & x_{13} \\ x_{21} & x_{22} & x_{23}\\ \end{bmatrix}_{2\times 3}=\begin{bmatrix} w_{11}x_{11} & w_{12}x_{12} & w_{13}x_{13} \\ w_{21}x_{21} & w_{22}x_{22} & w_{23}x_{23} \\ w_{31}x_{31} & w_{32}x_{32} & w_{33}x_{33} \\ \end{bmatrix} [w11w21w12w22w13w23]2×3[x11x21x12x22x13x23]2×3= w11x11w21x21w31x31w12x12w22x22w32x32w13x13w23x23w33x33

numpy中,对应方法是:np.multiply(a,b),该方法等价于a*b

In [25]: A = np.asarray([[1, 2], [3, 4], [5, 6]])
In [26]: B = np.asarray([[1, 2], [3, 4], [5, 6]])

In [27]: A
Out[27]:
array([[1, 2],
       [3, 4],
       [5, 6]])

In [28]: B
Out[28]:
array([[1, 2],
       [3, 4],
       [5, 6]])

In [29]: np.multiply(A,B)
Out[29]:
array([[ 1,  4],
       [ 9, 16],
       [25, 36]])

3.3 示例

在这里插入图片描述

四、numpy广播

x的列数 必须等于y的行数,这不属于广播的情况,还是矩阵乘法
在这里插入图片描述


x进行广播,至与y同维,再对应元素相乘
在这里插入图片描述
x行和列进行广播,至与y同维,再对应元素相乘
在这里插入图片描述

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值