标准安装的Python中用列表(list)保存一组值,可以用来当作数组使用,不过由于列表的元素可以是任何对象,因此列表中所保存的是对象的指针。这样为了保存一个简单的[0,1,2],需要有3个指针和三个整数对象。对于数值运算来说这种结构显然比较浪费内存和CPU计算时间。
NumPy的诞生弥补了这些不足。NumPy是python中用来进行科学计算的第三方库(底层任是用C实现的)。它包括:
NumPy提供了一个N维数组类型ndarray,它描述了相同类型的“items”的集合。ndarray在存储数据的时候,数据与数据的地址都是连续的,这样就给使得批量操作数组元素时速度更快。
Numpy底层使用C语言编写,内部解除了GIL(全局解释器锁),其对数组的操作速度不受Python解释器的限制,效率远高于纯Python代码。
Numpy是开源免费的,它遵从BSD许可协议。官网网址如下:
http://www.numpy.org/
可以在命令行输入 pip install numpy 来完成Numpy的安装。
本篇即后续涉及到Numpy的各篇都假设已用下面推荐的方式导入了Numpy:
import numpy as np
>>> a = np.array([1, 2, 3, 4]) #传递 list
>>> a array([1, 2, 3, 4])
>>> b = np.array((2, 1, 2)) #传递 tuple >>> b array([2, 1, 2])
>>> c = np.array([[1,2,3],[4,5,6]]) #传递这种嵌套的序列可以创建多维数组 >>> c array([[1, 2, 3], [4, 5, 6]])
>>> c = np.array([1,2,3], dtype = float)#可以指定数据类型 >>> c array([1., 2., 3.]) #主要数字后面有小数点
>>> np.zeros([2,1]) #指定数组的shape(形状,包含每一纬的长度) array([[0.], [0.]])
>>> np.ones([3,2]) array([[1., 1.], [1., 1.], [1., 1.]])
>>>np.eye(4) #指定 阶数 ; eye 是 单位矩阵符号 I 的谐音
array([[1., 0., 0., 0.], [0., 1., 0., 0.], [0., 0., 1., 0.], [0., 0., 0., 1.]])
注:BSD开源协议是一个给予使用者很大自由的协议。基本上使用者可以"为所欲为",可以自由的使用,修改源代码,也可以将修改后的代码作为开源或者专有软件再发布。但"为所欲为"的前提当你发布使用了BSD协议的代码,或者以BSD协议代码为基础做二次开发自己的产品时,需要满足三个条件:1.如果再发布的产品中包含源代码,则在源代码中必须带有原来代码中的BSD协议。2.如果再发布的只是二进制类库/软件,则需要在类库/软件的文档和版权声明中包含原来代码中的BSD协议。3.不可以用开源代码的作者/机构名字和原来产品的名字做市场推广。
本文分享自 Python可视化编程机器学习OpenCV 微信公众号,前往查看
如有侵权,请联系 cloudcommunity@tencent.com 删除。
本文参与 腾讯云自媒体分享计划 ,欢迎热爱写作的你一起参与!