f10@t's blog

python-Numpy库使用

字数统计: 919阅读时长: 3 min
2022/04/26

学习一下Numpy库的使用,该库在机器学习领域有不小的用处,可以高效的进行向量、矩阵等之间的运算操作。最近在学习强化学习的部分,代码实现刚好有用到。

基础部分

安装

安装非常简单,使用pip命令就可以了:

pip install numpy

简单使用和基本概念

Numpy中主要的对象都是同构(homogeneous)多维(multidimensional)数组,可以理解为一个如下的表格:

1
2
3
| 序号  | 年龄  |  成绩  |
| 1 | 18 | 100 |
| 2 | 20 | 98 |

除去表头外,可以看到数据都是同质的,即这里都是数字(通常为number)。上述的数据我们可以用一个多维列表表示:

1
2
[[1., 18., 100.],
[2., 20., 98.]]

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
2
3
4
5
>>> demo = np.arange(15)
>>> type(demo)
<class 'numpy.ndarray'>
>>> demo
array([ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14])

上面的arange函数用来生成指定范围内,指定step的均匀的数据。通该函数我们就得到了一个numpy.ndarray的对象,函数定义:

arange(...) arange([start,] stop[, step,], dtype=None, *, like=None)

​ Return evenly spaced values within a given interval.

我们使用reshap函数将他变为一个指定行和列的向量组:

1
2
3
4
>>> demo.reshape(3, 5)
array([[ 0, 1, 2, 3, 4],
[ 5, 6, 7, 8, 9],
[10, 11, 12, 13, 14]])

reshape函数实现修改向量的维度,这样我们就将数据修改为了二维的了,他有两个轴,长度分别为3和5(不理解这两个数字可以往下看)。定义如下:

reshape(a, newshape, order='C') Gives a new shape to an array without changing its data.

对于一个ndarray对象,几个比较关键的属性如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
# ndim 数组的维度数量,也叫做轴axis的数量
>>> demo.ndim **注意下这里**
2
# shape 数组的维度,等价于各个轴的长度,等价于秩的值
# 第一位代表轴0的长度,第二位代表轴1的长度,第三位代表轴3的长度
>>> demo.shape
(3, 5)
# size 包含元素总数
>>> demo.size
15
# itemsize 元素大小
>>> demo.itemsize
4
# dtype 数据类型,既可以为Python标准类型,也可以是numpy.int32、numpy.int16、numpy.float64
>>> demo.dtype
dtype('int32')
>>> demo.dtype.name
'int32'

读到这里你可能会和我一样疑惑(没有最好...),哎,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 维度

CATALOG
  1. 1. 基础部分
    1. 1.1. 安装
    2. 1.2. 简单使用和基本概念
  2. 2. 参考学习