Python数据分析之numpy数组全解析

2019-09-06 19:59| 发布者: |

这些数据类型可以通过如np.bool_、np.float16等形式来调用,上文中提到过,创建数组时可以指定数据类型:

 a = np.array
array

可以通过numpy数组自带的dtype属性来查看数组的数据类型:

 a.dtype
dtype

为什么输出的类型是bool而不是bool_呢?因为numpy中后缀带下划线 _ 的数据类型指向的就是python原生的数据类型,也就是说,np.bool_与python中的bool数据类型等效,np.float_与python中的float类型等效。

当一个数组已经被创建,但是想要改变其数据类型,那就可以通过np.asdtype方法:

 a.astype
array
 a = np.random.random)
array
 a.dtype
dtype
 a.astype
array
 a.dtype
dtype

numpy中数组使用与存放多维数据,所以,所谓数组的形状指的就是数据的维度大小,以及每一维度元素个数。我们可以通过数组自带的shape属性来查看形状信息:

 a = np.array
array
 a.shape # 查看形状属性

可以看到,查看形状属性时返回的是一个元组,元素的长度代表数组的维度,元组每一个属性代表对应的维度的元素个数,就表示第一个维度元素个数是2,第二个维度长度是3。

在数组创建之后,数组的形状也是可以改变的。改变数组的形状通过数组的reshape方法:

 a = np.ones)
array
 a.shape

 b = a.reshape
array
 b.shape

 b = a.reshape) # 元组作为参数
array
 b.shape

可以看到,np.reshape方法可以同时传入多个描述形状的数字,也可以传入一个数组,当然,如果将形状改变为一维数组时,必须传入的是元组。另外需要注意,传入reshape方法的多个参数的乘积必须与改变前数组总长度相等,否则会报错。

numpy数组中专门提供了一个方法加你个数组转换为以为数组,那就是flatten方法,这个方法在执行数组运算是非常有用:

 a = np.ones)
 b = a.flatten
array
 b.shape

对数据使用时,不可避免要进行索引和切片,numpy在这一方面不可谓不强大。numpy数组中所有的索引都是从0开始的,我们可以根据索引来精确取数据。

下面所有实例都已下方数组a来展开:

 a = np.arange.reshape)
array

取一行

 a[1] # 取第二行数据
array

取连续多行数据

 a[:2] # 取前两行数据
array

也可以加上步长:

 a[::2] # 每隔一行取一次
array
 a[1:] # 取第2行后面所有行
array

取不连续多行数据

 a[[0,-1]] # 取第一行和最后一行
 a[[0,-1]]
array

可以看到,对numpy根据索引进行取值的方法与python中list索引取值方法类似,都是通过方括号里面传入索引取值,当需要对多维进行索引时,每一位数据之间用逗号隔开。

取一列

 a[:,1] # 取第2列
array

取连续多列

 a[:,1:3] # 取第2列到第3列
array

取不连续多列

 a[:,[0,3]] # 取第1列和第4列
array)

取连续多行多列

 a[1:3:,1:3] # 取第2、3行中的第2、3列
array

取多个不连续位置数据

看到这里你应该也明白了取行、取列的规律了,如果取不连续的多行多列呢?例如取第1、3行与第2、4列,你可能认为是a[[0, 2], [1, 3]],我们来看看:

 a[[0, 2], [1, 3]]
array

可见,返回的并不是预期的数据,而是第1行第2列、第3行第4列的数据,也就是和位置的数据。

从而我们可以得出结论,如果取第3行中第3列、第5列,第4行中第1列、第7列数据方法如下:

 a[[2,2,3,3],[2,4,0,6]] # 第3行中第3列、第5列,第4行中第1列、第7列数据
array

取单个数据

 b = a[3,3]
 type # 取单个类型是返回的就是一个确切的numpy类型数值
 class 'numpy.int64' 

bool索引取值

numpy中提供了一些通用函数来实现通过bool条件判断实现按条件取值,使用这些通用方法,与使用对应的符号时等效的,符号与numpy通用方法对应关系如下:

<
>
关于我们
AB模版网成立于2014年,我们是一家专注用户体验设计开发与互联网品牌建设的设计公司,创立至今为2000多位客户提供了创新与专业的设计方案。设计服务范围包括:交互原型设计、产品视觉设计、网站设计与开发建设、移动及软件产品界面设计、图标设计、品牌及平面设计等。

联系我们

13588889999服务时间:9:00-18:00)

admin@adminbuy.cn

官方微信官方微信

部门热线

前   台:13588889999
业务部:13588889999
客服部:13588889999
技术部:13566667777
人事部:13566667777

咨询电话13588889999 返回顶部
返回顶部