数学要素(全彩图解 + 微课 + Python编程)
上QQ阅读APP看书,第一时间看更新

1.4 向量:数字排成行、列

到了本节读者会问,明明第一章讲的是算数,怎么一下扯到了“向量”这个线性代数的概念呢?

向量、矩阵等线性代数概念对于数据科学和机器学习至关重要。在机器学习中,数据几乎都以矩阵形式存储、运算。毫不夸张地说,没有线性代数就没有现代计算机运算。逐渐地,大家会发现算数、代数、解析几何、微积分、概率统计、优化方法并不是一个个孤岛,而线性代数正是连接它们的重要桥梁之一。

然而,部分初学者对向量、矩阵等概念却表现出了特别抗拒,甚至恐惧的态度。

基于以上考虑,本书把线性代数基础概念穿插到各个板块,以便突破大家对线性代数的恐惧,加强大家对这个数学工具的理解。

下面书归正传。

行向量、列向量

若干数字排成一行或一列,并且用中括号括起来,得到的数组叫作向量(vector)。

排成一行的叫作行向量(row vector),排成一列的叫作列向量(column vector)。

通俗地讲,行向量就是表格的一行数字,列向量就是表格的一列数字。以下两例分别展示了行向量和列向量,即

注意:用numpy.array()函数定义向量(数组)时如果只用一层中括号[],比如numpy.array([1, 2, 3]),得到的结果只有一个维度;有两层中括号[[ ]],numpy.array([[1, 2, 3]])得到的结果有两个维度。这一点在NumPy库矩阵运算中非常重要。

式(1.6)中,下角标“1×3”代表“1行、3列”,“3×1”代表“3行、1列”。本书在给出向量和矩阵时,偶尔会以下角标形式展示其形状,如X150×4代表矩阵X有150行、4列。

利用NumPy库,可以用numpy.array([[1, 2, 3]])定义式(1.6)中的行向量。用numpy.array([[1], [2], [3]])定义式(1.6)中的列向量。

转置

鸢尾花书采用的转置符号为上标“T”。行向量转置(transpose)可得到列向量;同理,列向量转置可得到行向量。举例如下,有

如图1.15所示,转置相当于镜像。图1.15中的红线就是镜像轴,红线从第1行、第1列元素出发,朝向右下方45°。

图1.15 向量转置

鸢尾花书用加粗、斜体小写字母来代表向量,如图1.15中的向量a和向量b

给定如下行向量aan个元素,元素本身用小写字母表示,如

其中:下角标代表向量元素的序数。[a1,a2,…an]读作“n row vector,a sub one, a sub two, dot dot dot, a sub n”。

Bk3_Ch1_08.py定义行向量和列向量,并展示如何通过转置将行向量和列向量相互转换。

本书在介绍线性代数相关知识时,会尽量使用具体数字,而不是变量符号。这样做的考虑是,让读者构建向量和矩阵运算最直观的体验。这给鸢尾花书《矩阵力量》一册打下基础。

《矩阵力量》一册则系统讲解线性代数知识,以及线性代数与代数、解析几何、微积分、概率统计、优化方法、数据科学等板块的联系。