首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Numpy 简介

Numpy 简介

作者头像
用户6021899
发布2019-08-14 16:16:54
1.2K0
发布2019-08-14 16:16:54
举报

标准安装的Python中用列表(list)保存一组值,可以用来当作数组使用,不过由于列表的元素可以是任何对象,因此列表中所保存的是对象的指针。这样为了保存一个简单的[0,1,2],需要有3个指针和三个整数对象。对于数值运算来说这种结构显然比较浪费内存和CPU计算时间。

NumPy的诞生弥补了这些不足。NumPy是python中用来进行科学计算的第三方库(底层任是用C实现的)。它包括:

  1. 一个强大的N维数组对象Array;
  2. 比较成熟的(广播)函数库;
  3. 用于整合C/C++和Fortran代码的工具包;
  4. 实用的线性代数、傅里叶变换和随机数生成函数。

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

  • 可以通过给array函数传递Python的序列对象创建数组:

>>> 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.]])

  • 可以创建元素全为1的数组:

>>> np.ones([3,2]) array([[1., 1.], [1., 1.], [1., 1.]])

  • 可以创建单位数组(对角线元素全为1.,其它元素全为0.):

>>>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.不可以用开源代码的作者/机构名字和原来产品的名字做市场推广。

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2019-03-05,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 Python可视化编程机器学习OpenCV 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档