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

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命名空间中的一个函数) :

猜你喜欢

转载自blog.csdn.net/LivLu24/article/details/93625638
今日推荐