NumPy是高性能科学计算和数据分析的基础包,这是一个处理数组的强大模块,本期将会从如下几个方面介绍numpy模块:
1、数组的创建
2、数组属性和函数
3、数组元素的获取--索引、切片
一、创建数组
创建数组最简单的办法就是使用array函数,它接受一切序列型对象,比如列表和元组等。
1、一维数组的创建
1.1、通过numpy模块中的arange函数创建一维有序数组
#通过arange函数创建一维数组
In [1]:importnumpyasnp
In [2]:arr1=np.arange(6)
In [3]:arr1
Out[3]:array([,1,2,3,4,5])
1.2、通过numpy模块中的array函数创建一维数组
#通过列表序列创建一维数组
In [4]:arr2=np.array([2,3,4])
In [5]:arr2
Out[5]:array([2,3,4])
#通过元组序列创建一维数组
In [6]:arr3=np.array((6,7,8,9))
In [7]:arr3
Out[7]:array([6,7,8,9])
2、二维数组的创建
二维数组的创建,本质是列表套列表或者元组套元组,如下所示:
#列表套列表创建二维数组
In [8]:arr4=np.array([[1,2,3,4],[5,6,7,8]])
In [9]:arr4
Out[9]:
array([[1,2,3,4],
[5,6,7,8]])
#元组套元组创建二维数组
In [10]:arr5=np.array(((1,2,3,4),(5,6,7,8),(9,10,11,12)))
In [11]:arr5
Out[11]:
array([[1,2,3,4],
[5,6,7,8],
[9,10,11,12]])
3、特殊数组的创建
除了array函数之外,还有一些函数也可以创建数组,比如,zeros和ones分别可以创建指定长度或形状全0或全1数组。要用这些方法创建多维数组,只需要传入一个表示形状的元组即可,示例如下:
#创建全1的一维数组
In [12]:arr6=np.ones(3)
In [13]:arr6
Out[13]:array([1.,1.,1.])
#创建全1的二维数组
In [14]:arr7=np.ones((3,4))
In [15]:arr7
Out[15]:
array([[1.,1.,1.,1.],
[1.,1.,1.,1.],
[1.,1.,1.,1.]])
#创建全的一维数组
In [16]:arr8=np.zeros(3)
In [17]:arr8
Out[17]:array([0.,0.,0.])
#创建全的二维数组
In [18]:arr9=np.zeros((3,4))
In [19]:arr9
Out[19]:
array([[0.,0.,0.,0.],
[0.,0.,0.,0.],
[0.,0.,0.,0.]])
二、数组属性和函数
2.1、当一个数组创建好之后,我们更多的想知道数组本身有哪些属性。
In [1]:importnumpyasnp
In [2]:arr=np.arange(1,13).reshape(3,4)
In [3]:arr
Out[3]:
array([[1,2,3,4],
[5,6,7,8],
[9,10,11,12]])
In [4]:arr.shape#返回数组的行数和列数
Out[4]:(3,4)
In [5]:arr.size#返回数组元素的个数
Out[5]:12
In [6]:arr.dtype#返回数组中元素数据类型
Out[6]:dtype('int32')
In [7]:arr.ndim#返回数组的维数
Out[7]:2
In [8]:arr.T#返回数组的转置结果
Out[8]:
array([[1,5,9],
[2,6,10],
[3,7,11],
[4,8,12]])
2.2、介绍完数组属性之后,接下来我们来看看数组自身有哪些函数可操作
1、将一维数组转换成二维数组,通过reshape函数重置数组的行数和列数
In [1]:importnumpyasnp
In [2]:arr=np.arange(1,13)#创建一维数组
In [3]:arr
Out[3]:array([1,2,3,4,5,6,7,8,9,10,11,12])
# 一维数组转换为二维数组
In [4]:arr1=arr.reshape(4,3)
In [5]:arr1
Out[5]:
array([[1,2,3],
[4,5,6],
[7,8,9],
[10,11,12]])
2、数组行数的统计,可以采用len函数
#数组行数的统计
In [6]:len(arr1)#返回数组的行数
Out[6]:4
3、数组转换成列表,采用tolist函数
#数组转换成列表
In [7]:arr2=arr1.tolist()
In [8]:arr2
Out[8]:[[1,2,3],[4,5,6],[7,8,9],[10,11,12]]
4、数组数据类型的转换,采用astype函数强制转换
#数组数据类型的转换
In [9]:arr3=arr1.astype(float)
In [10]:arr3
Out[10]:
array([[1.,2.,3.],
[4.,5.,6.],
[7.,8.,9.],
[10.,11.,12.]])
In [11]:arr1.dtype
Out[11]:dtype('int32')
In [12]:arr3.dtype
Out[12]:dtype('float64')
三、数组元素的获取--索引、切片
一维数组元素的获取与列表元素的获取方式一样,如下所示:
In [1]:importnumpyasnp
In [2]:arr=np.arange(6)
In [3]:arr
Out[3]:array([,1,2,3,4,5])
In [4]:arr[3]#获取第4个元素
Out[4]:3
In [5]:arr[:3]#获取前3个元素
Out[5]:array([,1,2])
In [6]:arr[3:]#获取第4个元素以及之后的所有元素
Out[6]:array([3,4,5])
In [7]:arr[-1]#获取最后1个元素
Out[7]:5
In [8]:arr[-2:]#获取最后2个元素
Out[8]:array([4,5])
In [9]:arr[::2]#从第1个元素开始,获取步长为2的所有元素
Out[9]:array([,2,4])
二维数组元素的获取,如下所示:
In [1]:importnumpyasnp
In [2]:arr=np.arange(12).reshape(3,4)
In [3]:arr
Out[3]:
array([[,1,2,3],
[4,5,6,7],
[8,9,10,11]])
In [4]:arr[1]# 返回数组的第2行
Out[4]:array([4,5,6,7])
In [5]:arr[:2]#返回数组的前2行
Out[5]:
array([[,1,2,3],
[4,5,6,7]])
In [6]:arr[[,2]]#返回指定的第1行和第3行
Out[6]:
array([[,1,2,3],
[8,9,10,11]])
In [7]:arr[:,]#返回数组的第1列
Out[7]:array([,4,8])
In [8]:arr[:,-2:]#返回数组的最后2列
Out[8]:
array([[2,3],
[6,7],
[10,11]])
In [9]:arr[:,[,2]]#返回数组的第1列和第3列
Out[9]:
array([[,2],
[4,6],
[8,10]])
In [10]:arr[1,2]#返回数组中第2行第3列对应的元素
Out[10]:6
此次numpy分享差不多结束了,下期将继续分享该模块的其它内容,若我写的对大家有所帮助,麻烦大家给个鼓励或者关注一下。
学习与分享,关注小号
领取专属 10元无门槛券
私享最新 技术干货