模长为1的向量称为单位向量,例如二维空间的(1,0),(0,1),三维空间的(1,0,0),(0,1,0),(0,0,1),n维空间的(1,0,……,0),(0,1,0,……,0),……,单位向量一般用大写字母I表示。
应用单位向量和向量运算规则可以组合出更多向量。例如二维空间的单位向量为:

向量A=(3,2)的组合公式为:

程序清单:
import numpy as np# 定义单位向量I1 = np.array([1,0])I2 = np.array([0,1])# 信息组合A = 3*I1 + 2*I2print(A)
类似上面的组合运算称为向量的线性组合,两个向量的线性组合就是纯量a与向量I(1)的乘积,加上纯量b与向量I(2)的乘积,运算结果是一个新的二维向量。纯量a、b可以取任何实数,因此通过单位向量I(1)和I(2)线性组合生成的向量,将会充满整个二维向量空间。
下面给出n维空间线性组合的定义:
假设有非空向量集合V,V中所有向量的维数相同,集合中的向量通过线性运算组合出新的向量,这种组合称为向量的线性组合。
例如集合V有下面的向量:

V包含了三维空间内的三个单位向量,应用这三个单位向量,V内向量的线性组合会充满整个三维空间R^3,也可以说R^3空间内的所有向量都可以由V内向量的线性组合来表示。
下面给出计算三维空间向量线性组合的程序代码:
import numpy as np#创建三维单位向量I1 = np.array([1,0,03])I2 = np.array([0,1,0])I3 = np.array([0,0,1])# 定义线性组合函数def combination(x,y,z):return x * I1 + y * I2 + z*I3if __name__ == '__main__':# 要求用户输入x,y,zx = float(input("请输入实数x:\n"))y = float(input("请输入实数y:\n"))z = float(input("请输入实数z:\n"))# 计算向量的线性组合A = combination(x,y,z)print(A)
在机器学习应用中,经常需要将样本数据进行规范化处理,样本数据一般都是特征向量,计算特征向量的单位向量是对样本数据进行规范化处理的一种方法。
若已知一个非零向量A,如何计算该向量A的单位向量?
我们知道向量的模是向量的长度,单位向量是长度为1的向量,将非零向量A除以向量A的模长即可得单位向量。下面给出计算已知三维向量,求其单位向量的Python代码:
import numpy as np#计算向量的模def norm(x):return np.linalg.norm(x)#计算单位向量def normalize(x):return x / norm(x)if __name__ == '__main__':# 要求用户输入x,y,z三个分量x = float(input("请输入实数x:\n"))y = float(input("请输入实数y:\n"))z = float(input("请输入实数z:\n"))# 计算单位向量A = normalize(np.array([x,y,z]))print(A)# 计算向量A的模长print(norm(A))
程序运行结果:
请输入实数x:3请输入实数y:2请输入实数z:5A的单位向量:[0.48666426 0.32444284 0.81110711]A的模长:1.0
从运算结果可以看出,在n维空间内单位向量有无数个,只要向量的模长为1即为单位向量。类似前面非空向量集合V内的单位向量称为标准单位向量,在n维空间内有n个标准单位向量。
文章转载自数学遇上机器学习,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。




