大数跨境
0
0

Python之numpy数组学习(一)

Python之numpy数组学习(一) CDA数据分析师
2017-05-22
1
导读:前面已经安装并学习了Python中的科学计算库,今天主要学习下numpy数组。

作者  Airy
本文转自AiryData,转载需授权


前言


前面已经安装并学习了Python中的科学计算库,今天主要学习下numpy数组。


Numpy数组对象


Numpy中的多维数组称为ndarray,它有两个组成部分。

  • 数据本身。

  • 描述数据的元数据。


在数组的处理过程中,原始数据不受影响,变化的只是元数据。


Numpy数组通常是由相同种类的元素组成,即数组中数据类型必须一致。好处是:数组元素类型相同,可轻松确定存储数组所需的空间大小。同时,numpy可运用向量化运算来处理整个数组。Numpy数组的索引从0开始。(这里我使用的是ipython命令行,ipython最近刚开始用,以后详细介绍下。)


In [3]: import numpy as np

In [4]: a = np.arange(5)

In [5]: a.dtype

Out[5]: dtype('int32')


上面数组的数据类型为int32,这一般跟你安装的Python版本有关。不过我安装的是64位,不知道怎么回事这里是int32,后面再检查下。


上一篇我们说了向量(一维的numpy数组)的创建方法,下面看一下上面生成的向量。


In [6]: a

Out[6]: array([0, 1, 2, 3, 4])

In [7]: a.shape

Out[7]: (5,)


可以看到,该向量有5个元素,该数组的shape属性是一个元组,存放的是数组在每一个维度的长度。


创建多维数组


我们已经知道了如何创建向量,下面开始建立多维numpy数组,生成矩阵后,再看它的形状。


In [8]: m = np.array([np.arange(2),np.arange(2)])

In [9]: m

Out[9]:

array([[0, 1],

      [0, 1]])


上面我们用arrange方法创建了一个简单的2*2的数组,利用array()函数创建数组时,需要传递给它一个对象,并且这个对象必须是数组类型。如Python的列表。


创建之后,我们要选择矩阵的元素,这里就相当于一个二维坐标系,我们只要找到对应的坐标即可。


In [10]: m[0,0]

Out[10]: 0

In [11]: m[0,1]

Out[11]: 1

In [12]: m[1,0]

Out[12]: 0

In [13]: m[1,1]

Out[13]: 1


可以看到,选择数组元素很简单,对于数组m,只要通过m[m,n]的形式,就能访问数组内的元素,其中m和n为数组元素的下标,从0开始。


Numpy的数值类型


Python本身支持整型、浮点型和复数型,为了科学计算,numpy提供了更加丰富的数据类型,注意:numpy跟数学运算有关的数据类型的名称都以数字结尾。这个数字指示了该类型的变量所占用的二进制位数。Numpy的各种数值类型如下图所示:



每一种数据类型都有相应的转换函数,许多函数都带有一个指定数据类型的参数,该参数一般可选。


In [15]: np.float64(30)

Out[15]: 30.0

In [16]: np.bool(30)

Out[16]: True

In [17]: np.float(True)

Out[17]: 1.0

In [18]: np.int8(30)

Out[18]: 30

In [20]: np.arange(7, dtype='uint16')

Out[20]: array([0, 1, 2, 3, 4, 5, 6],dtype=uint16)


注意:不允许把复数转化成整型。也不允许把复数转化为浮点数,但是允许把浮点数转化为复数。复数的实部和虚部分别使用real()函数和imag()函数提取。


数据类型对象是numpy.dtype类的实例。数组是一种数据类型。数据类型对象表明了数据占用的字节数,所占用字节的具体数目一般存放在类dtype的itemsize中。


In [6]: import numpy as np

In [7]: a = np.arange(5)

In [8]: a

Out[8]: array([0, 1, 2, 3, 4])

In [9]: a.dtype.itemsize

Out[9]: 4


一维数组的切片和索引


一维numpy数组的切片操作和Python列表的切片一样,看一下下面的例子来体验一下。


In [34]: a = np.arange(9)

In [35]: a

Out[35]: array([0, 1, 2, 3, 4, 5, 6, 7, 8])

#通过下标取数据

In [36]: a[3:7]

Out[36]: array([3, 4, 5, 6])

#用下标选择元素,范围0到7,下标每次递增2

In [37]: a[:7:2]

Out[37]: array([0, 2, 4, 6])

#反转数组

In [38]: a[::-1]

Out[38]: array([8, 7, 6, 5, 4, 3, 2, 1, 0])


小结


今天学习一下Python中numpy的简单使用。希望通过上面的操作能帮助大家。如果你有什么好的意见,建议,或者有不同的看法,我都希望你留言和我们进行交流、讨论。



推荐阅读


【书单】18本数据科学家必读的R语言和Python相关书籍

如何像数据科学家一样思考

北京VS上海,哪座城市人口更多?

我是如何一不小心阻止了勒索病毒的全球蔓延

用python抓取摩拜单车API数据并做可视化分析(源码)

2017年大数据和数据科学的六大发展趋势

你每天要花多少时间在手机上?

初级数据科学家求职时的 3 大必备能力

不可错过的优质深度学习课程

职场 | 数据库面试常问的一些基本概念

听说你最擅长“拖”,你“拖”得过Excel吗?

数据科学优质课程推荐#2:统计入门课程篇

歌手外科和猴姑,大数据告诉你白百何出轨后谁最惨

想学习数据科学?我们整理了一份优质编程入门课程清单

数据科学家在美国仍然是最热门工作的3大原因

一个优秀数据分析师的准则

Python 实现一个火车票查询的工具

干货 | 携程实时用户行为系统实践

数据分析证明最靠谱的电影评分网站不是 IMDB, 也不是烂番茄,而是...

那些年,写 Python 犯过的错误

【声明】内容源于网络
0
0
CDA数据分析师
🌸全国30万数据分析从业人员,有10万在CDA数据分析师 🌺CDA会员俱乐部有1000个数据库,成为持证人即可获得相关数据信息 🌹未来两样东西最有价值:一个是数据,一个是GPU
内容 9451
粉丝 0
CDA数据分析师 🌸全国30万数据分析从业人员,有10万在CDA数据分析师 🌺CDA会员俱乐部有1000个数据库,成为持证人即可获得相关数据信息 🌹未来两样东西最有价值:一个是数据,一个是GPU
总阅读34
粉丝0
内容9.5k