【Python】【线性代数】用Python学习线性代数——向量

向量在Python中表示的常用工具库是numpy(Numerical Python),支持大量的维度数组与矩阵运算,此外也针对数组运算提供大量的数学函数库。

行向量表示

行向量因为只有一行,就用以为数组表示。

import numpy as np	#导入库
a = np.array([1, 2, 3, 4])	#用numpy中的array生成行向量
print(a)	#打印结果

运行结果:

[1 2 3 4]

列向量表示

这里列向量用行向量转成矩阵,然后转置获得。

import numpy as np
a = np.array([1, 2, 3, 4])
a_t = a[:, np.newaxis]	#newaxis是增加维度的方法,一维数组转成矩阵
# a_t = a[:, None] 上行代码的np.newaxis也可以用None代替
print(a_t)
print(a_t.shape)	#打印向量的形状,也就是这个矩阵的形状

运行结果:

[[1]
 [2]
 [3]
 [4]]
(4, 1)	#可以看出这矩阵是4行1列的

当然有个更简便的方法,行向量直接用矩阵的一行表示,就可以直接转置获得列向量了。

import numpy as np
a = np.array([[1, 2, 3, 4]])	#生成一行向量的矩阵
print(a)
print(a.T)	#T是转置的方法

运行结果:

[[1 2 3 4]]	#行向量
[[1]
 [2]
 [3]
 [4]]	#列向量

向量的加法

向量的加法运算规则:
[ u 1 u 2 u 3 u n ] + [ v 1 v 2 v 3 v n ] = [ u 1 + v 1 u 2 + v 2 u 3 + v 3 u n + v n ] \left[ \begin{matrix} u_1 \\ u_2 \\ u_3 \\ \vdots \\ u_n \\ \end{matrix} \right] + \left[ \begin{matrix} v_1 \\ v_2 \\ v_3 \\ \vdots \\ v_n \\ \end{matrix} \right] = \left[ \begin{matrix} u_1+v_1 \\ u_2+v_2 \\ u_3+v_3 \\ \vdots \\ u_n+v_n \\ \end{matrix} \right]

import numpy as np
u = np.array([[1, 2, 3, 4]]).T
v = np.array([[5, 6, 7, 8]]).T
print(u + v)

运行结果:

[[ 6]
 [ 8]
 [10]
 [12]]

向量的数量乘法

向量的数量乘法运算规则:
c [ u 1 u 2 u 3 u n ] = [ c u 1 c u 2 c u 3 c u n ] c \left[ \begin{matrix} u_1 \\ u_2 \\ u_3 \\ \vdots \\ u_n \\ \end{matrix} \right] = \left[ \begin{matrix} cu_1 \\ cu_2 \\ cu_3 \\ \vdots \\ cu_n \\ \end{matrix} \right]

import numpy as np
u = np.array([[1, 2, 3, 4]]).T
print(4 * u)

运行结果:

[[ 4]
 [ 8]
 [12]
 [16]]

向量的内积

向量的内积运算规则:
u v = [ u 1 u 2 u 3 u n ] [ v 1 v 2 v 3 v n ] = u 1 v 1 + u 2 v 2 + u 3 v 3 + + u n v n u·v = \left[ \begin{matrix} u_1 \\ u_2 \\ u_3 \\ \vdots \\ u_n \\ \end{matrix} \right] · \left[ \begin{matrix} v_1 \\ v_2 \\ v_3 \\ \vdots \\ v_n \\ \end{matrix} \right] = u_1v_1 + u_2v_2 + u_3v_3+ ··· + u_nv_n

向量运算

向量可以直接计算内积。

import numpy as np
u = np.array([1, 2, 3, 4])
v = np.array([5, 6, 7, 8])
print(np.dot(u, v))	#dot方法用来计算内积

运行结果:

70

矩阵运算

因为矩阵乘法要保证前矩阵列与后矩阵行相等,所以要转置。

import numpy as np
u = np.array([[1, 2, 3, 4]])
v = np.array([[5, 6, 7, 8]]).T	
print(np.dot(u, v))

运行结果:

[[70]]

向量的外积

因为二维空间外积对应的几何意义是两个向量张成的平行四边形的面积,三维空间外积对应的几何意义是两个向量张成的平面的法向量,所以这里只讨论二维空间和三维空间。

二维空间

向量的外积运算规则:
u × v = [ u 1 u 2 ] × [ v 1 v 2 ] = u 1 v 2 u 2 v 1 u×v = \left[ \begin{matrix} u_1 \\ u_2 \\ \end{matrix} \right] × \left[ \begin{matrix} v_1 \\ v_2 \\ \end{matrix} \right] = u_1v_2 - u_2v_1

import numpy as np
u = np.array([1, 2])
v = np.array([3, 4])
print(np.cross(u, v))	#cross方法计算外积

运行结果:

-2

三维空间

向量的外积运算规则:
u × v = [ u 1 u 2 u 3 ] × [ v 1 v 2 v 3 ] = [ u 1 v 3 u 3 v 2 u 3 v 1 u 1 v 3 u 1 v 2 u 2 v 1 ] u×v = \left[ \begin{matrix} u_1 \\ u_2 \\ u_3 \\ \end{matrix} \right] × \left[ \begin{matrix} v_1 \\ v_2 \\ v_3 \\ \end{matrix} \right] = \left[ \begin{matrix} u_1v_3-u_3v_2 \\ u_3v_1-u_1v_3 \\ u_1v_2-u_2v_1 \\ \end{matrix} \right]

import numpy as np
u = np.array([1, 2, 3])
v = np.array([4, 5, 6])
print(np.cross(u, v))

运行结果:

[-3  6 -3]

附Jupyter Notebook文件

点我下载:向量.ipynb

发布了143 篇原创文章 · 获赞 140 · 访问量 27万+

猜你喜欢

转载自blog.csdn.net/qq_43733499/article/details/104070768