1. 什么是向量?
数学概念嘛,在不同的应用场景下意义是不大一样的,比如说对于机械或者物理的同学,向量是有长度有方向的一个指向空间的带箭头的线段,而对于从事计算机工作的我们来说,向量的定义可以是非常简单粗暴的——
“把数排成一列就是向量”
是不是很简单?吼吼。当我们需要把一些数据放在一起作为一个整体来处理的时候,我们就用到了向量。比如,下面就分别是我们熟知的,一维向量、二维向量、三维向量了。
在没有特殊说明的情况下,我们通常说的向量,一般都指列向量。但是由于列向量的写法比较占用空间,所以一般用“横向量的转置”来表示,如下所示,其中T代表Transpose。
在翻看了一些资料之后,我对向量有了不一样的理解。在计算机领域,其实,我们并不关注向量的“几何意义”,因为我们通常用到的向量,维数都相当高,意义也很复杂。对于程序员来说,向量的意义是我们”自定义“的;对于计算机来说,向量的计算也只是数字的计算。因此,向量的几何意义只是我们用来理解向量的基础计算的一种便于理解的方式,它实际上就是一种编程的“数据结构“。
在Python中可以用 Numpy 的 ndarray 来表示向量:
import numpy as np
a = np.array ( [ -1, 2, 8] )
向量的转置实现如下,注意上面声明 a 时用了两对 [] 以生成一个二维向量,一维的向量转置结果不变。
>>> b = np.array([2, 4])
>>> b.T
array([2, 4])
>>> a = np.array([[2, 4]])
>>> a.T
array([[2],
[4]])
有了向量这种“数据结构”,那我们就可以定义其运算规则了。
2. 向量的运算规则
向量的加法和数量乘法:
相同维数的向量之间的加法就是对应元素相加。在几何意义上表示两个向量收尾相连得到的新向量(“三角形法则”)。
向量的数量乘法即用一个常量乘上一个向量,意味着向量长度的拉伸、压缩或反向操作,这种操作可以用一个术语来描述——Scaling。
向量加法、数乘的Python实现如下:
import numpy as np
a = np.array ([-1, 2])
b = np.array ([3, 1])
print (a + b) # [2, 3]
print (a - b) # [-4, 1]
print (2 * a) # [-2, 4]
向量的加法和数乘满足交换律、结合律、分配率。
向量的内积和外积
向量的内积和外积,在我看来是比较鸡肋的,因为在坐标系改变的情况下,这两种运算的数值也会发生变化,而且在高维的应用中,它们的意义也是非常模糊的,因此在这里就只是简单过一下。
向量的内积(dot product/ scalar product),也叫作向量的点积、数量积,其结果为一个实数,计算方式如下:
向量的内积有以下运算规律:
向量的外积,也叫作向量的叉乘,其结果是一个方向垂直于原来两个向量的向量,其计算方式如下:
向量内外积的python实现如下:
import numpy as np
a = np.array([3, 5, 2])
b = np.array([1, 4, 7])
print a.dot(b) # 内积:37
print np.dot(a, b) # 内积:37(另一种等价写法)
print np.cross(a, b) # 外积:[27, -19, 7]
向量的投影
向量的投影原理如图所示:
其Python实现如下:
import numpy as np
def get_projection(a, b):
return a.dot(b)*1.0*b/b.dot(b)
a = np.array([1, 2])
b = np.array([2, 2])
print get_projection(a, b) # [1.5 1.5]
向量的模
我们规定,对于向量
它的模(或长度)为:
也就是说,
关于向量的模,还有一些七七八八的计算法则,在这里就简单点一下:
在Python中可以用np.linalg.norm()函数实现向量模的计算:
import numpy as np
x = np.array([1,2,3,4,5])
np.linalg.norm(x) #结果:7.416198487095663
向量的夹角和距离
这都是初中还是高中学过的内容了,就不多说了,Bye~
参考:
https://www.cnblogs.com/zhangdongsheng/p/5229525.html
https://blog.csdn.net/swartz_lubel/article/details/78360138
https://blog.csdn.net/qq_23869697/article/details/82693000
https://wenku.baidu.com/view/6b3e2fdca58da0116c174912.html?sxts=1567562044157