一个向量中成分的个数就是该向量的维数。因此,如果进一步推广下去,还会有三由此可见,的。同理,这个三维向量可以用来表示三维空间中的一个指定点
表示列向量
import numpy as np A=np.array([1,2,3,4]) A_t = A[:,np.newaxis] print(A_t) print(A_t.shape)
简单生成列向量
可以看作是行数为1或列数为1的一个二维数组。,因此向量还可以看作是一个特殊的矩阵,即可以把行向量看作是一个1xm的特殊矩阵,可以把列向量看作是一个nx1的特殊矩阵。
import numpy as np A=np.array([[1,2,3,4]]) print(A) print(A.T)
需要注意的是,在实际计算向量内积时,无论是行向量间的内积还是列向量间的内积,运算结果都是一样的。
使用python语言计算向量的内积非常方便。但是需要注意的是,如果直接使用工具库numpy中的内积运算函数dot进行运算操作,那么传入的参数必须是用一维数组表示的行向量。
import numpy as np u=np.array([3,5,2]) v=np.array([1,4,7]) print(np.dot(u,v))
在前文介绍了表示行、列向量的通用方法,即用行数或列数为1的二维数组来表示向量,是否可以用在这里进行内积运算呢?答案是不可以,如果这么做程序就会报错,示例如下。
同样地,用二维数组表示的列向量进行内积运算,程序同样也会报错。
import numpy as np u= np.array([[3,5,2]]) v=np.array([[1,4,7]]) print(np.dot(u,v))
import numpy as np
u=np.array([[3,5,2]]).T
v=np.array([[1,4,7]]).T
print(np.dot(u,v))
使用二维数组来表示向量,这种方法表示下的向量本质上是矩阵,只不过是行数或列数为1的特殊矩阵。若将这种方法表示下的向量作为内积运算函数dot的参数,那么就需要依据矩阵的乘法法则来计算。此时,若是依据矩阵乘法的运算法则来运算,程序就会报错,如果一定要使用这种向量,那么得到正确结果的示例如下。
import numpy as np u = np.array([[3,5,2]1) v = np.array([[1, 4,7]]).T print(np.dot(u,v))
先数乘后叠加:向量的线性组合
基于向量加法和数量乘法这两类基本运算,将其进行组合应用,
向量线性组合的具体含义:针对向量u和向量v,先求出标量c和向量u的数量积再求出标量d和向量v的数量积,最后再将二者进行叠加,就得到了向量u和向量v的线性组合 cu +dv。需要注意的是,这里的标量c和标量d可以取到任意值(自然也包括0)。
矩阵与矩阵的乘法
(1)左边矩阵的列数和右边矩阵的行数必须相等
(2)左边矩阵的行数决定了最终结果矩阵的行数。
(3)右边矩阵的列数决定了最终结果矩阵的列数
矩阵乘以向量:改变向量的空间位置
矩阵与向量的乘法,一般而言是写成矩阵A在左,列向量x在右的AX运算形式。这种Ax形式的写法便于描述向量x的空间位置在矩阵4的作用下进行变换的过程,矩阵与向量的乘法其实可以看作是矩阵与矩阵乘法的一种特殊形式,只不过位于后面的是一个列数为1的特殊矩阵而已。
1)矩阵在左,列向量在右,矩阵的列数和列向量的维数必须相等。
(2)矩阵和列向量相乘的结果也是一个列向量。
(3)矩阵的行数就是结果向量的维数。
(4)乘法运算的实施过程就是矩阵的每行和列向量的对应元素分别相乘之后再进行相加
关于基底变换:一些意外情况
经过矩阵变换,会将向量原始的基底变换为一组新的基底。
对于一个m*n的矩阵A和n维列向量x,经过Ax的乘法作川,x的n个n维默认基向量被转换成了n个m维的目标向量。
下面针对m和n的大小关系,分为以下几种情况进行讨论。
(1)当n>m时,显然这n个向量线性相关,因此不构成基底。
(2)当n<m时,即使这"个向量线性无关,由于它们不能表示m维空间中的所有向量,因此也不能称为m维目标空间的基底。
(3)当且仅当n=m,且这"个向量线性无关时,它们才能称为目标空问中的一组新的基底。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通