引言
机器学习的很多项目都会使用 Python
作为编程语言,这是因为不同于其他编程语言,Python
的 Numpy
库可以快速地实现矢量操作。在其他编程语言中,适量操作往往需要用户自己构建,而在 Python
中,我们可以很容易得到结果,这里特来介绍一下。
正文
矢量加法
Python
中的数组本身就可以看作是一个矢量,因此,矢量加法就是数组简答地相加。
import numpy as np
a = np.array([1, 0])
b = np.array([0, 1])
print(a + b)
"""
result:
[1 1]
"""
矢量减法
由于减法与加法互为逆运算,减法也可以看作是加上也给负数,因此,矢量减法的做法可类比上述矢量加法。
矢量点乘
import numpy as np
a = np.array([1, 1])
b = np.array([2, 3])
print(a * b)
"""
result:
[2 3]
"""
显然,简单的数组相乘并不等同于矢量点乘,少了一步求和运算。我们可以添加上一步求和。
import numpy as np
a = np.array([1, 1])
b = np.array([2, 3])
print(np.sum(a * b))
"""
result:
5
"""
我们得到了正确的结果。
然而在 Python
中有更简单的方式------np.vdot()
或者 np.dot()
。
import numpy as np
a = np.array([1, 1])
b = np.array([2, 3])
print(np.dot(a, b))
print(np.vdot(a, b))
"""
result:
5
5
"""
矢量叉乘
import numpy as np
a = np.array([1, 1])
b = np.array([2, 3])
a1 = np.array([1, 1, 0])
b1 = np.array([2, 3, 0])
print(np.cross(a, b))
print(np.cross(a1, b1))
"""
result:
1
[0 0 1]
"""
我们知道,平面内矢量叉乘方向是垂于与平面的方向,因此,二维矢量叉乘得到的结果是一个数,而这个数实际上的意义是其他两个方向为 0
的矢量。如上述代码得到的结果所示,1
的实际意义是 [0 0 1]
。
矢量大小
import numpy as np
a = np.array([1, 1])
print(np.sqrt(np.dot(a, a)))
"""
result:
1.4142135623730951
"""
本文仅作为抛砖引玉,有想要详细了解 Numpy
模块用法的可以学习本人专栏 ------- Python科学计算进阶。
如果大家觉得有用,就请点个赞吧~