学习一下Numpy库的使用,该库在机器学习领域有不小的用处,可以高效的进行向量、矩阵等之间的运算操作。最近在学习强化学习的部分,代码实现刚好有用到。
基础部分
安装
安装非常简单,使用pip命令就可以了:
pip install numpy
简单使用和基本概念
Numpy中主要的对象都是同构(homogeneous)的多维(multidimensional)数组,可以理解为一个如下的表格:
1
2
3| 序号 | 年龄 | 成绩 |
| 1 | 18 | 100 |
| 2 | 20 | 98 |
除去表头外,可以看到数据都是同质的,即这里都是数字(通常为number)。上述的数据我们可以用一个多维列表表示:
1 | [[1., 18., 100.], |
Numpy中通常将维度dimension
称为axis
(n.
轴,轴线),如上面这个数据,他的轴(维度)就是2,及两个axes,其中每一个axis长度为3。像上面这种array
在Numpy中就叫ndarray
,这和python自带的那个array.array
是不一样的,后者只是一维的。官网描述如下:
In NumPy dimensions are called axes.
即维度称作轴,最简单的理解方式就是,我们学过的一维坐标系、二维坐标系、三维坐标系,这里的维实际上就是轴,你问我什么轴?那就是x、y、z了。所以我们也可以说一维坐标系就只有一个轴,二维有两个轴。
下面我们用命令行创建一个ndarray
的对象:
1 | 15) demo = np.arange( |
上面的arange
函数用来生成指定范围内,指定step的均匀的数据。通该函数我们就得到了一个numpy.ndarray
的对象,函数定义:
arange(...) arange([start,] stop[, step,], dtype=None, *, like=None)
Return evenly spaced values within a given interval.
我们使用reshap
函数将他变为一个指定行和列的向量组:
1 | 3, 5) demo.reshape( |
reshape
函数实现修改向量的维度,这样我们就将数据修改为了二维的了,他有两个轴,长度分别为3和5(不理解这两个数字可以往下看)。定义如下:
reshape(a, newshape, order='C') Gives a new shape to an array without changing its data.
对于一个ndarray
对象,几个比较关键的属性如下:
1 | # ndim 数组的维度数量,也叫做轴axis的数量 |
读到这里你可能会和我一样疑惑(没有最好...),哎,demo
不是一个3×5的向量组吗?为什么维度是2?为什么不是3?不是5?请把这个3×5的向量组理解为一个3×5的表格,那么这个表格是几维的呢?或者说几个轴呢?答案显然是2了,且两个轴的长度分别为3和5。如果还不能充分理解,请看下图:
参考学习
NumPy: the absolute basics for beginners — NumPy v1.22 Manual
【Python 模块学习】NumPy中的维度(dimension)、轴(axis)、秩(rank)的含义_Babyfatliang的博客-CSDN博客_python 维度