吴思楠机器学习之路:Numpy里多维数组的创建

作者: 吴思楠 2017-04-14 15:28:27

Numpy是Python科学计算的核心库之一,主要提供了对多维数组的强有力支持。

什么是多维数组?

核心对象是同型的多维数组(简单理解就是一个表格,通常内容都是些数字),具有相同的数据类型。

概念:

1. axes(轴):数组的维度统称为轴。

2. rank:轴的数量称为rank。

举例:一维数组[1,2,1],就是一个rank为1的数组,因为它只有一个轴(一维)。下图显示的是一个rank为2(二维)的数组。它的***个轴(维)的长度是2,如红色线框所示;第二个轴(维)的长度是3,如蓝色线框所示。这个有点像数据结构里说的:数组的元素本身也可以是数组类型一样,***扩展下去。

Numpy里的多维数组:ndarray

Numpy的数组类numpy.array一般称呼为ndarray,这么叫主要是为了和Python的数组类array.array区分开来。后面的文章里,如无特殊说明的地方,array和ndarray均是指的numpy.array。

ndarray(numpy.array)的主要属性:

  • ndim:数组的轴数(维度)
  • shape:python的元组类型,其中每个数字分别表示的是各个轴(维)上数组的长度
  • size:多维数组里全部元素的总数(等于shape元组里所有数值的乘积)
  • dtype:多维数组里元素的类型。同一个多维数组里所有的元素都是同一种类型

这里插播一下:

Anaconda是一个基于Python的Data Science Platform,相当于一个包装了数据分析常用库和工具的软件。它是我们开始学习的一个好帮手。下载地址:https://www.continuum.io/anaconda-overview

安装好后,打开“IPython”,或者“Jupyter QtConsole”,或者“Spyder”都可以。它们本质上都是对IPython这个交互式环境的包装。

练习:创建一个ndarray。

直接使用numpy.array()方法,参数为python的 list or tuple (sequence type)。下面的代码里,“In”是我们输入的代码,“Out”是上一行代码的输出。不是每一行代码都会有输出哦。

代码:

下面这张图是在“Spyder”里执行上面代码的效果图:

双击上图中的变量查看窗口(Variable explorer)里的ndarray,可以看到一个二维数组的展示图:

创建ndarray的一些其它方法

1. zeros,ones和empty方法

  • numpy.zeros
  • numpy.ones
  • numpy.empty

numpy提供了另外一种快速创建ndarray的方法,尤其适合数组内容未知的情况,同时也避免了数组增长过程中的开销

2. arange方法

arange可以返回一个平均分布的ndarray(numpy.array)。可以分别设置开始(可选),结束(必填)和间距(可选)。下面的示例非常清楚的展示了该方法的使用。

3. reshape方法

顾名思义,此方法是将一个已经存在了的ndarray,转换为另外一个shape(形状,即数组各个轴上的长度)的多维数组。新数组包含了原来所有的数据。

注意:新的形状必需保持size相同,直白一点,就是***个shape的参数,3x4=12,需要和第二个shape的参数2x6=12,始终保持一致。

4. random方法

用随机数填充新数组的内容。numpy里有多个产生数据数组的方法,容易搞晕。产生随机数目前我见到两大类,一类是按照“均匀分布”(例如概率论里的“0-1连续分布”)产生,另一类是按照“正态分布”产生的。

在numpy里,我们会见到random,ranf,sample这几个方法,其实它们全部都是:

numpy.random.random_sample这个方法的别名,都是基于“均匀分布”产生随机数。下面的代码验证了这一点:

详细介绍下用的最多一个:

numpy.random.random

API:https://t.im/1b9sw

它随机返回半开区间[0.0, 1.0)的浮点数,方法参数只有一个:

size : int或者int型元组,同时也作为返回数组的shape。如果输入的是(2,3,5),则首先抽取2x3x5=30个随机数,然后形成一个形状为(2,3,5)的多维数组作为返回值。如果没有提供参数,则直接返回一个随机数。

练习:生成[12, 30)区间的一个6x3的数组

代码:

好了,关于numpy第1讲就到这里,还有很多内容待后面用到的时候又再介绍。

【本文为51CTO专栏作者“吴思楠”的原创稿件,转载请通过51CTO联系作者获取授权】

戳这里,看该作者更多好文

1-Numpy 基础 多维数组
上一篇:深度学习概述:从感知机到深度网络 下一篇:Spark for python developers —Spark与数据的机器学习
评论
取消
暂无评论,快去成为第一个评论的人吧

更多资讯推荐

为什么神经网络如此强大?

众所周知,神经网络非常强大,可以将其用于几乎任何统计学习问题,而且效果很好。 但是您是否考虑过为什么会这样? 为什么在大多数情况下此方法比许多其他算法更强大?

闻数起舞 ·  2天前
达摩院AI进入中国科技馆,首张AI识别新冠CT成科技抗疫历史见证

5月29日消息,全国科技工作者日来临之际,一个特别的藏品入选中国科技馆“2020数字馆藏”——阿里巴巴达摩院AI识别标注的第一张新冠肺炎CT影像。达摩院AI作为科技抗疫的历史见证,被写入中国科技发展史。

佚名 ·  2天前
机器学习变革物流运输和交通出行

云和机器学习的融合催生了自动驾驶技术尤其是人们出行方式的广泛创新,正在改变整个行业的游戏规则。根据普华永道(PWC)的数据,68%的物流运输企业负责人认为,未来5年,提供物流运输服务的核心技术的改变将颠覆整个行业。

AWS大中华区云服务产品管理总经理顾凡 ·  2天前
人工智能可以塑造活动产业的未来吗?

活动组织者可以为活动管理引入AI,以使他们的活动更加成功。现场活动是很好的营销方式,也是增强业务与客户关系的优秀方式。根据一项调查,84%的领导者认为活动是其业务成功的关键因素。技术的使用正在改变活动的计划和组织方式。

佚名 ·  2天前
提升城市气质守护宜居环境 AI打通治理闭环

人工智能被一些研究人员称为“21世纪的电力”,认为其几乎可以为万事万物提供动力。而在城市加速发展的当下,人工智能也渐渐成为了新型智慧城市建设的“推动者”和“守望者”。

今夕何夕 ·  2天前
华为机器视觉连发16项新品,开辟千亿安防新战场

2020年伊始,华为安防将品牌名改为更具科技感的“华为机器视觉”,同时大举发力安防分销市场。而后,华为Holosens Store算法网购商城也正式上线,这标志着摄像机已经开始经历手机变革为“智能手机”的时刻。

佚名 ·  3天前
终于!华为将下一代摄像机做的不像摄像机

日前,安防行业发生了两件大事。对于安防龙头来说,这是个黑色星期一,因大股东计划减持2%的公司股份,以当天的收盘价计算,拟减持金额约56亿,导致安防龙头股价收跌6.61%,一天之内,185亿市值蒸发殆尽。而同时,同城的华为安防举行了HoloSens下一代摄像机暨2020新品发布会,强势推出六大新品加十大解决方案,千万人次围观,燃爆整个行业。

佚名 ·  3天前
扑面而来的机器视觉风潮

在5月25日杭州举办的华为HoloSens下一代摄像机暨2020年新品发布会上,段爱国和他的团队带来了六大新品,包括全新的下一代“四无”生态型摄像机以及超高密智能视频存储平台、AI超微光卡口摄像机、双光谱热成像摄像机、AI双模球型摄像机和5G摄像机等,以及精准覆盖重点场景的十大场景化解决方案。

佚名 ·  3天前
Copyright©2005-2020 51CTO.COM 版权所有 未经许可 请勿转载