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 对图片的数据进行处理的。
为了便于观看数据,下面故意图片变小了一些
将上面的图片变成3*3大小的
它对应的像素数据是下面这样的,3*3*3
同样的方法,再打开数字 1,获取其对应的数据
它对应的像素数据是下面这样的,3*3*3
如果要将两张图片水平方向合成在一起。
只需要将它们的数据,横向组成在一起就可以了。
得到下面这种数据结构。
用列表的话,相信你应该知道怎么操作,循环遍历拼接就可以了。不过想想还是挺麻烦的。
用 numpy 处理的话就非常简单了。hstack可以将两个列表直接水平方向拼接在一起。
先看一个纯数字列表案例
结果
证明确实可以,下面将其用到图片上
(全文完)
长按二维码,加关注!叶子陪你玩
本文分享自微信公众号 - 叶子陪你玩编程(gh_cd062460d25e)。
如有侵权,请联系 [email protected] 删除。
本文参与“OSC源创计划”,欢迎正在阅读的你也加入,一起分享。