第1章 NumPy基础
为何第1章介绍NumPy基础?在机器学习和深度学习中,图像、声音、文本等首先要实现数字化。那么如何实现数字化?数字化后如何处理?这些都涉及NumPy。NumPy是数据科学的通用语言,而且与TensorFlow关系非常密切,是科学计算、深度学习的基石。TensorFlow中的重要概念—张量(Tensor)与NumPy非常相似,二者可以非常方便地进行转换。掌握NumPy是学好TensorFlow的重要基础,故我们把它列为全书第1章。
基于NumPy的运算有哪些优势?实际上Python本身包含列表(list)和数组(array)结构,但对于大数据来说,这些结构有很多不足。因为列表的元素可以是任何对象,因此列表中保存的是对象的指针。例如为了保存一个简单的[1, 2, 3]列表,我们需要有3个指针和3个整数对象。对于数值运算来说,这种结构显然比较浪费内存和CPU等宝贵资源。至于数组对象,它直接保存数值,与C语言的一维数组比较类似,但是它不支持多维,定义的内置函数也不多,因此也不适合做数值运算。
NumPy(Numerical Python的简称)的诞生弥补了这些不足,它提供了两种基本的对象:ndarray(n-dimensional array object,多维数组对象)和ufunc(universal function object,全局函数对象)。ndarray是存储单一数据类型的多维数组,而ufunc则为数组处理提供了丰富的函数。
NumPy的主要特点总结如下。
1)提供ndarray这种既快速又节省空间的多维数组,提供数组化的算术运算和高级的广播功能。
2)使用标准数学函数对整个数组的数据进行快速运算,而不需要通过编写循环语句实现。
3)可作为读取/写入磁盘上的阵列数据和操作存储器映像文件的工具。
4)拥有线性代数、随机数生成和傅里叶变换的能力。
5)提供集成C、C++、Fortran代码的工具。
本章主要内容如下:
❑把图像数字化
❑存取元素
❑NumPy的算术运算
❑数据变形
❑通用函数
❑广播机制
❑用NumPy实现回归实例