施工计划来到数据分析以及爬虫部分,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又封装一个矩阵对象,它能提供线代中的点乘操作,这是机器学习公式运算所需要的,点乘的可视化图形为:
点乘实际上等价于:
其他剩余操作,如按块索引、常见聚合操作,也有对应的可视化图。
我把它们整理为一个pdf文档,一共14页,取名为《图解入门NumPy》,感兴趣的可以私信交流,如果对你有用,记得点赞支持哈 ~