NumPy 是一个运行速度非常快的数学库,主要用于数组计算,支持大量的维度数组与矩阵运算。


简单点说,涉及到数字计算等都可以使用,它的优势在于底层是C语言开发的,处理速度非常快。


看一个例子:计算 a^2 + b^2 


1.使用列表计算

结果

2.使用numpy 计算

结果


总结:numpy 把列表看成单个元素,省去了从列表中提取出来,然后处理又返回去,直接一步到位。



numpy 在科研计算或者数据分析方面用的还是比较多的,但是一般人平时好像都不怎么用。主要是找不到应用场景或者习惯于用老方法。


其实 numpy 用来造数据或者对多维列表处理是非常方便的,我平常用的主要也是处理这些。




生成全是1的 ndarray 数值

结果

数字3写成n,就能生成带有 n 个 1 的数组。


对应的 np.zeros(n) 生成的就是元素值为 0 的数组




生成3行2列,全是1的 ndarray 数值

结果

数字3和2表示行数和列数。更多维度继续增加即可,通常2维用的比较多。




生成三维数组,数字可以指定

结果




生成有序数组

和random库的 range方法一样用,其实包含了random库的全部功能

结果


上面的一些方法,对于生成大量的数字非常有用,不用循环就可以搞定。


不过生成的数组类型是 ndarray ,直接和 python 的列表是不能计算操作的,如果习惯使用列表对数据处理,可以使用 tolist() 方法将 ndarray 类型转换成你熟悉的列表数据类型。



结果


更多其它方法,可以查看 numpy 的官方文档。




下面看看我是怎样利用numpy 对图片的数据进行处理的。


为了便于观看数据,下面故意图片变小了一些

numpy 和图像处理结合-LMLPHP

将上面的图片变成3*3大小的

它对应的像素数据是下面这样的,3*3*3

同样的方法,再打开数字 1,获取其对应的数据

numpy 和图像处理结合-LMLPHP

它对应的像素数据是下面这样的3*3*3


如果要将两张图片水平方向合成在一起。

numpy 和图像处理结合-LMLPHP

只需要将它们的数据,横向组成在一起就可以了。

numpy 和图像处理结合-LMLPHP

得到下面这种数据结构。


用列表的话,相信你应该知道怎么操作,循环遍历拼接就可以了。不过想想还是挺麻烦的。


用 numpy 处理的话就非常简单了。hstack可以将两个列表直接水平方向拼接在一起。




先看一个纯数字列表案例

结果




证明确实可以,下面将其用到图片上


numpy 和图像处理结合-LMLPHP

numpy 和图像处理结合-LMLPHP


(全文完)


长按二维码,加关注!叶子陪你玩

numpy 和图像处理结合-LMLPHP


本文分享自微信公众号 - 叶子陪你玩编程(gh_cd062460d25e)。
如有侵权,请联系 [email protected] 删除。
本文参与“OSC源创计划”,欢迎正在阅读的你也加入,一起分享。

04-19 16:09