用Python处理数据(一)—— NumPy数组学习

优点
1.基于向量化的运算
2.数组运算时numpy数组比list效率高

(我用的是jupyter notebook)

创建一维数组:

用到的函数:
arange(x) 生成一个从0到(x-1)的包含x个元素的一维数组

创建多维数组:

用到的函数:
array() 将输入转化为ndarray(N维数组对象(矩阵),所有元素必须是相同类型)
这里写图片描述
或者:
这里写图片描述
再或者用到scipy
scipy 是一种使用numpy来做高等数学、信号处理、优化、统计的扩展包
这里写图片描述

显示数组形状

用数组的shape属性;
例如一维数组:
这里写图片描述
二维数组:
这里写图片描述

选择数组元素

通过a[m,n]形式选择元素(一维数组就不用说了),注意是从0开始;

这里写图片描述

numpy数值类型
类型说明
bool布尔型(值为True或者False),占用1比特
inti其长度取决于平台的整数(通常int32或者int64)
int8字节类型(-128~127)
int16整型(-32768~32767)
int32整型(-2^31~2^31-1)
int64整型(-2^63~2^63-1)
uint16无符号整型(0~65535)
uint32无符号整型(0~2^32-1)
uint64无符号整型(0~2^64-1)
float16半精度浮点型:符号占用1比特,指数占用5比特,尾数占用10比特
float32单精度浮点型:符号占用1比特,指数占用8比特,尾数占用23比特
float64或者float双精度浮点型:符号占用1比特,指数占用11比特,尾数占用52比特
complex64复数类型,由两个32位浮点型(实部和虚部)表示
complex128或者complex复数类型,由两个64位浮点数(实部和虚部)表示

这里写图片描述

dtype属性

这里写图片描述

一维数组的切片与索引

切片
与Python列表的切片一样:
这里写图片描述

索引
与Python列表的索引一样:
一维数组索引
这里写图片描述

二维数组索引
这里写图片描述

处理数组形状
1.改为指定数组形状

(1)reshape() 函数:

reshape(n,m,p)表示将数组改为n个m乘p数组
这里写图片描述

(2)resize()函数
resize()函数和reshape()函数类似,但是会改变所作用的数组
这里写图片描述

(3)用元组指定数组形状
这里写图片描述

2.将多维数组转化为一维数组

(1)拆解:ravel()函数
这里写图片描述
ravel()函数默认降维时行序优先,但是可以给一个参数让列序优先。
这里写图片描述
(2)拉直:flatten()函数

这里写图片描述
flatten()函数和ravel()一样默认降维时行序优先,但是可以给一个参数让列序优先。
这里写图片描述
ravel() 函数和 flatten() 函数的区别:
ravel()只是返回数组的视图,会改变原来的数组;flatten()函数返回的是真实的数组,需要分配新的内存空间
这里写图片描述
这里写图片描述

3.数组转置

(1)narray.T()函数:
这里写图片描述
(2)transpose()函数:
这里写图片描述

4.数组堆叠

(1)水平叠加:用元组确定ndarrays数组的形状,然后由hstack()函数来码放这些数组
这里写图片描述
PS:用concatenate()函数也能达到同样的效果,参数axis=1
这里写图片描述
(2)垂直叠加:先构建一个元组,然后用vstack()函数来码放
这里写图片描述
PS:用concatenate()函数也能达到同样的效果,参数axis=0
这里写图片描述
(3)列式堆叠:用column_stack()函数以列的方式对一维数组进行堆叠
这里写图片描述
PS:用这种方法堆叠二维数组时,过程类似于hstack()函数
这里写图片描述
(4)行式堆叠:用row_stack()函数以列的方式对一维数组进行堆叠
这里写图片描述
PS:用这种方法堆叠二维数组时,过程类似于vstack()函数
这里写图片描述
(5)深度叠加:沿着第三个坐标轴(纵向)的方向来叠加一摞数组,就像在一个数据图像的二维数组上叠加另一幅图像的数据
这里写图片描述

5.数组的拆分

(1)横向拆分:用hsplit()函数沿着横轴方向将数组拆分(即x轴)
这里写图片描述
PS:用split()函数也能达到同样的效果,参数axis=1
这里写图片描述
(2)纵向拆分:用vsplit()函数沿着纵轴方向将数组拆分(即y轴)
这里写图片描述
PS:用split()函数也能达到同样的效果,参数axis=0
这里写图片描述
(3)深向拆分:用dsplit()函数沿着深度方向将数组拆分(即z轴)
这里写图片描述
这里写图片描述

6.numpy数组的一些属性

ndim属性:储存维度数量
size属性:保存元素数量
itemsize属性:返回各个元素所占字节
nbytes属性:储存整个数组所需字节数量
这里写图片描述

7.数组的转换

转换为列表
这里写图片描述
用astype()函数转换为指定类型
这里写图片描述
转化为int类型时虚部会被丢掉,所以会报错。

花式索引

花式索引是在一个内部的numpy迭代器对象的基础上实现的。
下图利用花式索引将照片上的对角线置0;
这里写图片描述

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值