Python学习 | Numpy 利用数组进行数据处理

本文介绍了如何利用Numpy进行高效的数据处理,包括矢量化运算、数学与统计方法、布尔数组操作、数组唯一化、文件输入输出以及线性代数操作。重点讲述了如何用数组表达式代替循环提高计算速度,并提供了具体的代码示例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

NumPy数组可以将许多种数据处理任务表述为简洁的数组表达式(否则需要编写循环),用数组表达式代替循环的做法,通常被称为矢量化。一般来说,矢量化数组运算要比等价的纯Python方式快上一两个数量级(甚至更多) ,尤其是各种数值计算。

1.将条件逻辑表述为数组运算

假设根据cond中的值选取xarr和yarr的值:当cond中的值为True时,选取xarr的值,否则从yarr中选取。

  • python列表推导式(由纯python完成,大数组处理速度慢且无法用于多维数组)

  • 使用np.where

np.where的第二个和第三个参数不必是数组,它们都可以是标量值。如将cond为true的替换为2,为false的替换为-2。

2.数学和统计方法

sum、mean以及标准差std等聚合计算(aggregation,通常叫做约简(reduction) ) 既可以当做数组的实例方法调用,也可以当做顶级NumPy函数使用。

mean和sum这类的函数可以接受一个axis选项参数,用于计算该轴向上的统计值:

累加函数(如cumsum) 返回的是同样大小的数组,但是会根据每个低维的切片沿着标记轴计算部分聚类:

3.用于布尔型数组的方法

布尔值会被强制转换为1(True) 和0(False) 。因此,sum经常被用来对布尔型数组中的True值计数:

4.唯一化以及其它的集合逻辑

NumPy提供了一些针对一维ndarray的基本集合运算。其中,np.unique 用于找出数组中的唯一值并返回已排序的结果

5 用于数组的文件输入输出

np.save()、、np.savez()、np.load()

通过np.savez可以将多个数组保存到一个未压缩文件中,将数组以关键字参数的形式传入即可:

加载.npz文件时,会得到一个类似字典的对象,该对象会对各个数组进行延迟加载:

6 线性代数

NumPy提供了一个用于矩阵乘法的dot函数(既是一个数组方法也是numpy命名空间中的一个函数) :

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值