NumPy库是Python所有三方库中使用最多的,也是诸如SciPy、Panda等其他三方库的基础库,所以作为基本功是要求务必学习掌握的,这也是后期利用Python进行大数据分析的基础。
下面我将从三个维度将自己学习NumPy库的心得体会进行总结(若是需求更多的学习资料,可以进入我的 Github 进行查阅,里面有详细的学习笔记、完整代码以及思维导图可供下载。),这三个维度分别是:
- NumPy为什么这么重要
- 对多维数组(ndarray)的理解
- NumPy基础操作
NumPy库为什么这么重要
理由很简单,高效。
使用NumPy库可以让你在科学计算中更加效率,占用较小资源完成对大量数据的计算。
平时使用Excel处理数据时,当数据量达到几万或者进行大面积公式计算时,电脑会卡顿。你可想象下当数据量达到上千万甚至上亿级别时的计算量有多大。
你可能会问为什么NumPy可以做到高效处理大量数据。这涉及到一些艰深的计算机原理,简单而言跟数据在内存中的存储方式有关。
我建议初学者对此仅作了解即可,当然若是感兴趣也可以多查些资料,比如像计算机组成原理这种基础知识。这里只告诉你一组对比数据:对比Python自带的列表list,计算相同的数据,NumPy库的计算速度是前者的27倍。
关于效率这个话题,我相信在以后的学习与工作实践当中会经常碰到。
未来智能时代,数据的战略性地位毋庸置疑,数据的不可或缺也将成为社会共识。那么如何用最低的成本利用数据必然会成为大部分企业的普遍诉求。在依托平台化协作方式完成工作之外,大多数中小企业包括个人自由职业者都会想着最小化成本地利用数据。谁能高效地使用数据,谁就能在市场竞争当中取得相对优势。
对多维数组的理解
先来看张图。
对于多维数组的学习,我目前的心得是到三维数组这一层即可,再多无益,徒然烧脑而已。
客观地讲,掌握一维和二维数组的知识足以应对日常大部分工作,因为市面上主流数据库还是关系型数据库,而关系型数据库则是典型的二维矩阵数据结构,这在未来相当长一段时间内也会持续下去。另外,在多数人的思维认知中,二元思维还是占据主流,“一纵”“一横”遮蔽了大部分人的想象空间。一个很简单的例子,对于x,y轴组成的平面坐标轴很容易解释理解,若是再加个z轴想象与阐述起来就会有些吃力。
数组中关键性概念“轴”是务必要牢牢掌握的,具体而言主要是能理解和快速区分axis=0与axis=1的区别,因为这两者在python数据运算中经常以函数参数的形式出现,如果不能达到迅速判断的程度,对数据运算结果的推算显然是难以实现的,结果往往相差甚远。
那么,如何快速区分axis=0与axis=1呢?通俗地讲,axis=0就是跨行,axis=1就是跨列。如果沿axis=0进行计算,那么就是将每一行的元素、数组视为单位元素进行相应运算操作;如果沿axis=1进行计算,那么就是将每一列的元素、数组视为单位元素进行相应运算操作。
NumPy基础操作
NumPy的基础操作可分为三部分:
- 数组定义
- 数组运算
- 数组排序
数组定义包括创建数组与定义结构两部分,主要掌握array与dtype这两个方法,创建连续数组需要掌握arange与linspace;数组运算是指对数组进行加减乘除、求n方、取余,还有求最大、最小、中位数、平均数、加权平均数等统计函数;数组排序主要是掌握sort方法与sorted函数。
对于这部分的学习,我的建议是按照下面给出的参照表亲手做遍代码复现,当然也可以参阅我的 Github ,里面有更加全面的代码实现。眼过千遍不如手过一遍。通过代码复现强化对相关知识点的记忆,但无需死记硬背,主要是留有印象,待以后需要的时候随时查阅即可。随着熟练度的增加,自然熟能生巧。