【python讲线代】S03E02 向量运算的python描述与空间坐标变换

0.本集概览

1.向量的加法、数量及、内积、外积的python表示
2.向量的坐标依赖于选取的基底
3.向量在不同基底上表示维不同坐标及计算方法
4.构成基底的条件
5.张成空间的概念

上一集里,我们定义了向量这个数据结构,并用python语言对其进行了描述。

向量是线性代数中的基本概念,也是机器学习里的基础数据表示形式。例如:计算机阅读文本的过程首先就会将文本分词,然后用向量表示。这是因为向量很适合在高维空间中进行表达和处理。在机器学习中会接触到的诸如投影、降维的概念,都是在向量的基础上完成和实现的。

那么今天我们就首先来定义一下向量的基本运算:

1.python描述的向量运算

1.1.向量的加法

两个维数相同的向量才能进行加法运算,很简单,相同位置上的元素相加即可,结果向量的维数保持不变:

$(x_{1},x_{2},x_{3})^{T}+(y_{1},y_{2},y_{3})^{T}=(x_{1}+y_{1},x_{2}+y_{2},x_{3}+y_{3})^{T}$

代码片段:

import numpy as np

A = np.array([[1,2,3]]).T
B = np.array([[5,6,7]]).T
print(A + B)

运行结果:

[[ 6]
 [ 8]
 [10]]

1.2.向量的数量乘法

参与乘法运算的数和向量的每个元素相乘,结果向量的保持维数不变:

$c(x_{1},x_{2},x_{3})^{T}=(cx_{1},cx_{2},cx_{3})^{T} $

代码片段:

import numpy as np

A = np.array([[1, 2, 3]]).T
print(3*A)

运行结果:

[[3]
 [6]
 [9]]

1.3.向量与向量相乘

这里肯定会有同学问,那向量和向量相乘呢?向量与向量的乘法分为所谓的点乘(内积)叉乘(外积),先说内积。

1.3.1.向量的内积

向量 x 和向量 y 的点积的定义如下:

$x\cdot y=(x_{1},x_{2},x_{3})^{T}\cdot(y_{1},y_{2},y_{3})^{T}=x_{1}y_{1}+x_{2}y_{2}+x_{3}y_{3}$

这个定义看上去好像没什么,但是他的另一种表示方法的物理意义就十分清晰:$x\cdot y=\left| x \right|\left| y \right|cos\theta$,即反映了向量 $x$ 在向量 $y$ 方向上的投影的长度乘上向量 $y$ 的模长,换句话说如果 $y$ 是单位向量的话,就可以直接描述为 $x$ 在 $y$ 方向上的投影长度。

python中计算向量的内积非常简单,只注意一点,内积计算时无论是行向量间的内积还是列向量间的内积,其运算结果都是一样的,但是python内积运算函数中的参数要求必须是行向量:
代码片段:

import numpy as np

x = np.array([3, 5, 2])
y = np.array([1, 4, 7])
print(np.dot(x, y))

运行结果:

37

注意,向量千万不要写成下面的形式:
代码片段:

import numpy as np

x = np.array([[3, 5, 2]])
y = np.array([[1, 4, 7]])
print(np.dot(x,y))

运行结果:

Traceback (most recent call last):
  File "E:/12homework/12homework.py", line 5, in <module>
    print(np.dot(x,y))
ValueError: shapes (1,3) and (1,3) not aligned: 3 (dim 1) != 1 (dim 0)

代码片段:

top Created with Sketch.