前言
前面已经安装并学习了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的简单使用。希望通过上面的操作能帮助大家。如果你有什么好的意见,建议,或者有不同的看法,我都希望你留言和我们进行交流、讨论。
欢迎关注微信公众号,访问更多精彩:AiryData。
如需转载,请联系授权,谢谢合作。