Python深度学习:基于PyTorch
上QQ阅读APP看书,第一时间看更新

第1章 Numpy基础

在机器学习和深度学习中,图像、声音、文本等输入数据最终都要转换为数组或矩阵。如何有效地进行数组和矩阵的运算?这就需要充分利用Numpy。Numpy是数据科学的通用语言,而且与PyTorch关系非常密切,它是科学计算、深度学习的基石。尤其对PyTorch而言,其重要性更加明显。PyTorch中的Tensor与Numpy非常相似,它们之间可以非常方便地进行转换,掌握Numpy是学好PyTorch的重要基础,故它被列为全书第1章。

为什么是Numpy?实际上Python本身含有列表(list)和数组(array),但对于大数据来说,这些结构是有很多不足的。由于列表的元素可以是任何对象,因此列表中所保存的是对象的指针。例如为了保存一个简单的[1,2,3],都需要有3个指针和3个整数对象。对于数值运算来说,这种结构显然比较浪费内存和CPU等宝贵资源。至于array对象,它可以直接保存数值,和C语言的一维数组比较类似。但是由于它不支持多维,在上面的函数也不多,因此也不适合做数值运算。

Numpy(Numerical Python的简称)的诞生弥补了这些不足。Numpy提供了两种基本的对象:ndarray(N-dimensional Array Object)和ufunc(Universal Function Object)。ndarray是存储单一数据类型的多维数组,而ufunc则是能够对数组进行处理的函数。

Numpy的主要特点:

·ndarray,快速节省空间的多维数组,提供数组化的算术运算和高级的广播功能。

·使用标准数学函数对整个数组的数据进行快速运算,且不需要编写循环。

·读取/写入磁盘上的阵列数据和操作存储器映像文件的工具。

·线性代数、随机数生成和傅里叶变换的能力。

·集成C、C++、Fortran代码的工具。

本章主要内容如下:

·如何生成Numpy数组。

·如何存取元素。

·Numpy的算术运算。

·数组变形。

·批量处理。

·Numpy的通用函数。

·Numpy的广播机制。