一、向量的概念
向量是数学中非常重要的概念,通常用箭头标识。在计算机领域,向量也是非常常见的概念。向量通常包含数值和方向信息,可以用来表示运动、力等特定物理量。Python中也有向量表示方法,并且通常使用NumPy模块中的ndarray对象来表示向量。例如:
import numpy as np
arr = np.array([1, 2, 3])
print(arr)
运行结果为:
[1, 2, 3]
In[1]: import numpy as np
Out[1]:
array([1, 2, 3])
上述代码中,np.array()方法可以用来创建数组,而数组可以用来表示向量。
二、向量的操作
向量可以进行很多常见的数学操作,如加减乘除等,Python中也可以方便地实现这些操作。例如:
import numpy as np
arr1 = np.array([1, 2, 3])
arr2 = np.array([4, 5, 6])
sum_arr = arr1 + arr2
print(sum_arr)
运行结果为:
[5, 7, 9]
In[2]: import numpy as np
Out[2]:
In[3]: arr1 = np.array([1, 2, 3])
…: arr2 = np.array([4, 5, 6])
…: sum_arr = arr1 + arr2
…:
…: print(sum_arr)
在上述代码中,我们使用了+运算符来对两个向量进行相加,在得到相加结果后,将结果打印出来。在计算机中,向量的加减乘除操作通常都可以使用相应的运算符实现。
三、向量点积
向量点积是指两个向量对应位置上的数的乘积的和,可以用来计算向量的夹角。在Python中,我们可以直接使用numpy中的dot()方法来计算向量点积。例如:
import numpy as np
arr1 = np.array([1, 2, 3])
arr2 = np.array([4, 5, 6])
dot_val = np.dot(arr1, arr2)
print(dot_val)
运行结果为:
32
In[4]: import numpy as np
Out[4]:
In[5]: arr1 = np.array([1, 2, 3])
…: arr2 = np.array([4, 5, 6])
…: dot_val = np.dot(arr1, arr2)
…:
…: print(dot_val)
上述代码中,我们使用np.dot()方法来计算向量点积,结果为32。由于点积每个位置上的数的乘积的和,因此计算量非常小,而且非常实用。
四、向量叉积
向量叉积是指两个向量的向量积,可以得到一个垂直于两个向量所在平面的向量。在Python中,我们可以通过numpy中的cross()方法来计算向量叉积。例如:
import numpy as np
arr1 = np.array([1, 2, 3])
arr2 = np.array([4, 5, 6])
cross_val = np.cross(arr1, arr2)
print(cross_val)
运行结果为:
[-3, 6, -3]
In[6]: import numpy as np
Out[6]:
In[7]: arr1 = np.array([1, 2, 3])
…: arr2 = np.array([4, 5, 6])
…: cross_val = np.cross(arr1, arr2)
…:
…: print(cross_val)
在上述代码中,我们使用np.cross()方法来计算向量的叉积,结果为[-3, 6, -3]。通过计算向量的叉积,我们可以获得一些有用的信息,例如判断两个向量是否共面。
五、向量的长度与单位向量
向量的长度指的是它所在的空间中的长度大小,一般使用第欧几里得范数来计算。在Python中,可以使用linalg.norm()方法来计算向量的长度。例如:
import numpy as np
arr = np.array([1, 2, 3])
norm_val = np.linalg.norm(arr)
print(norm_val)
运行结果为:
3.74165738677
In[8]: import numpy as np
Out[8]:
In[9]: arr = np.array([1, 2, 3])
…: norm_val = np.linalg.norm(arr)
…:
…: print(norm_val)
在上述代码中,我们使用了numpy中的linalg.norm()方法来计算向量的长度,结果为3.7417。除了向量的长度外,还有一种很重要的向量,即单位向量。单位向量指的是向量的长度为1的向量。通常可以通过将向量除以它的长度来得到单位向量。例如:
import numpy as np
arr = np.array([1, 2, 3])
norm_val = np.linalg.norm(arr)
unit_val = arr / norm_val
print(unit_val)
运行结果为:
[0.26726124, 0.53452248, 0.80178373]
In[10]: import numpy as np
Out[10]:
In[11]: arr = np.array([1, 2, 3])
…: norm_val = np.linalg.norm(arr)
…: unit_val = arr / norm_val
…:
…: print(unit_val)
在上述代码中,我们先使用linalg.norm()方法计算向量的长度,然后通过将向量除以它的长度来得到单位向量,结果为[0.2673, 0.5345, 0.8018]。
六、总结
Python中,通过NumPy模块中的ndarray对象,可以非常方便地表示向量,并且能够进行各种向量操作,如加减乘除、点积、叉积、长度与单位向量等等。了解如何在Python中有效地处理向量对于很多科学计算和机器学习等领域都非常有帮助。