阅读量

原创教程,严禁转载。引用本文,请署名 Python中文网, http://www.zglg.work


二十、图解入门 NumPy

施工计划来到数据分析以及爬虫部分,Python领域,提到数据,自然会联想到一个包,NumPy,它太通用了,Pandas,SciPy,Tensorflow,scikit-learn 都选它为基础框架,所以Python生态里,掌握NumPy几乎是必须的。

NumPy处理数据,书写精简,能方便地对数据进行切片,切块,多维向量操作。

一般常见的数据类型有四种,以excel或csv为代表的二维数组型表格,还有以单通道或多通道的图像cv文件,还有一维数组格式的音频文件,最后以输入文本为代表的nlp

这些不同种类的输入数据格式,都能通过NumPy方便的表示和处理。正因如此,进一步强化了NumPy的王者地位。

就拿32乘32像素的黑白图片而言,只需一行代码便提取出左上角的10个像素块:

In [11]: a=np.random.randint(0,255,size=(32,32))                                
# 提取左上角的10*10的像素块
In [14]: a[:10,:10]                                                             
Out[14]: 
array([[115, 168,  94,  97, 208, 249,  94,  11, 194, 185],
       [ 77, 130, 203, 188, 243, 207, 229, 213, 170,  52],
       [250,  98,   7, 234,  69, 188, 152,  66, 210, 159],
       [228, 252, 122, 126,  36, 126, 210, 176,  60, 136],
       [103,  26,  98,  57,  56, 206, 221,   9, 165,  90],
       [ 47, 188,  55,  92, 169,   4, 150, 200, 105,  84],
       [241,  36, 161,   3,  57, 198, 216,  26,  33,  13],
       [ 34,  65, 175, 213,  52, 159,   7, 102, 102, 133],
       [214, 192,  38, 252,  12,  71,  38,  44, 165, 135],
       [234, 105, 130, 189, 162, 247,  58,  80,  88,  83]])

接下来,看看NumPy的基础用法。

要想快速掌握NumPy,要理解一些基本原理,如应用最广泛的reshape方法,通过它能将一维数组转为多维,反之亦然。表象为多维,实质在内存中始终为一维。

结合图形可视化,加速理解NumPy中的这些基本运算,如两个一维数组相加的可视化:

再有,NumPy的重要机制之一:广播,可能有些读者对其有些迷惑,不知何为广播,借助可视化图,一看便知:

1个1.6,被广播为2个1.6,原因是要与前面的数组长度匹配上,然后逐元素相加。

除了数组对象之外,NumPy又封装一个矩阵对象,它能提供线代中的点乘操作,这是机器学习公式运算所需要的,点乘的可视化图形为:

点乘实际上等价于:

Python 20个专题完整目录:

Python前言

Google Python代码风格指南

Python数字

Python正则之提取正整数和大于0浮点数

Python字符串

CSV读写乱码问题

Unicode标准化

Unicode, UTF-8, ASCII

Python动态生成变量

Python字符串对齐

Python小项目1:文本句子关键词的KWIC显示

Python列表

Python流程控制

Python编程习惯专题

Python函数专题

Python面向对象编程-上篇

Python面向对象编程-下篇

Python十大数据结构使用专题

Python包和模块使用注意事项专题

Python正则使用专题

Python时间专题

Python装饰器专题

Python迭代器使用专题

Python生成器使用专题

Python 绘图入门专题

Matplotlib绘图基础专题

Matplotlib绘图进阶专题

Matplotlib绘图案例