文章目录
-
- 向量定义:
- 向量的模
- 向量点积(内积)
-
- 几何意义
- 向量叉积(外积)
-
- 几何意义
- 矩阵乘法
- np.dot(a,b)
向量定义:
既有方向又有大小的量。
设今有向量:
A ⃗ \vec A A
=(a1,a2), B ⃗ \vec B B
=(b1,b2)
向量的模
∣ A ⃗ ∣ |\vec A| ∣A
∣ = a 1 2 + a 2 2 \sqrt{a_1^2+a_2^2} a12+a22
A B → \overrightarrow{AB} AB
= (b1-a1,b2-b1) , 则:
∣ A B → ∣ |\overrightarrow{AB}| ∣AB
∣ = ( a 1 − b 1 ) 2 + ( a 2 − b 2 ) 2 \sqrt{(a_1-b_1)^2 + (a_2-b_2)^2} (a1−b1)2+(a2−b2)2
向量点积(内积)
A和B的点积:
A*B=|A||B|cosθ (θ为向量A和B的夹角)
A*B = a1b1+a2b2
几何意义
几何意义为向量A在向量B上投影的长度乘再以向量B的长度。
- 点积的结果是一个数,又名数量积
- A*B=B*A
向量叉积(外积)
则A和B的叉积:
AxB=a1b2-a2b1
AxB=|A||B|sinθ (θ为向量A和B的夹角)
几何意义
AxB的结果是一个向量, 这个向量的方向垂直于A,B所构成平面的(即法向量),|A x B|是向量A、B组成平行四边形的面积的大小
- 叉乘结果是一个向量,又名向量积
- A x B= -B x A
矩阵乘法
![](https://img.laitimes.com/img/9ZDMuAjOiMmIsIjOiQnIsIyZuBnLzIzNxMzMzMjMzEzMwAjMwIzLc52YucWbp5GZzNmLn9Gbi1yZtl2Lc9CX6MHc0RHaiojIsJye.png)
np.dot(a,b)
import numpy as np
# 1. 点积,满足交换律
a1 = np.array([[1, 2],
[3, 4]])
b1 = np.array([[5, 6],
[7, 8]])
c1 = a1 * b1 # 点积,要求a1和b1的维度相同
print(c1)
"""
c1 : [[5, 12],
[21, 32]]
5= 1*5
12 = 2*6
21 = 3*7
32 = 4*8
"""
# 2.1 dot矩阵乘法(矩阵乘矩阵),不满足交互率
a2 = np.array([[1, 2, 3],
[4, 5, 6]])
b2 = np.array([[5, 6],
[7, 8],
[9, 10]])
# c2 = np.dot(a2, b2)
c2 = a2.dot(b2)
print(c2)
"""
c2 : [[46, 52]
[109,124]]
46 = 1*5+2*7+3*9
52 = 1*6+2*8+3*10
109 = 4*5+5*7+6*9
124 = 4*6+5*8+6*10
"""
# 2.2 dot 向量点积(向量乘向量),满足交换律
a3 = np.array([1, 2, 3, 4, 5])
b3 = np.array([6, 7, 8, 9, 10])
# c3 = np.dot(a3, b3.T)
# c3 = np.dot(a3, b3)
c3 = np.dot(b3, a3)
print(c3) # 130
# 2.3 矩阵乘向量,当相乘的有其中一个为矩阵时,另外一个自动转换成矩阵
a4 = np.random.randint(10, size=(3, 2)) # 矩阵
print(a4)
b4 = np.array([1, 2]) # 向量(在相乘时自动转换为矩阵)
# b4 = np.array([1, 2]).T
c4 = np.dot(a4, b4)
print(c4)
# 矩阵和向量的shape区别
x = np.array([[1, 2, 3]]).T
y = np.array([1, 2, 3]).T
print("shape of matrix x: " + str(x.shape)) # (3, 1)
print("shape of vector y: " + str(y.shape)) # (3,)