数组编程
使用Numpy数组可以使你利用简单的数组表达式完成多项数据操作任务,而不需要编写大量的循环,这个极大的帮助了我们高效的解决问题。我们都知道向量化的数组操作比纯Python的等价实现在速度这一方面快很多,至于多少(一到两个数量级)甚至更多,生活需要慢节奏,但是计算就不可以了,掌握高效的计算模型,可以让数据分析如虎添翼!
简单例子
我们生成从-3.14--3.14,按照0.01的间隔生成,最后计算表达式X^2 Y^2的值
逻辑条件作为数组操作
numpy.where函数是三元表达式 x if condition else y 的向量化版本,假设我们有一个布尔值数组和两个数值数组
首先我们要明确的是我们自己去写这个逻辑来进行判断的话就比较的失败,因为遇到比较大的数组,速度会比较的慢,因为所有的代码工作都是解释器Python代码完成的,其次如果是多维的那就无法凑效了,但是我们使用np.where就可以简单的完成。
在np.where的第二个和第三个参数并需要数组,它们可以是标量,where在数据分析中的一个典型用法就是根据一个数组来生成一个新的数组。假设你有一个随机生成的矩阵数据,并且你想要其中的正值都有替换为2,所有的负数都替换为-2,使用这个函数轻松解决。
数学和统计方法
许多关于计算整个数组统计值或关于轴向数据的数据函数,可以作为数组类型的方法被调用。你可以使用聚合函数(通常也叫缩减函数),比如sum,mean,STD(标准差)既可以直接调用也可以使用顶层的numpy函数
对于统计方法我们的案例其实差不多,至于怎样去了解那就需要自己去琢磨了,下面有一个基础数组的统计方法
基础数组的统计方法:
sum |
计算总数
|
mean |
数学平均,0长度的数组平均值为NaN |
std,var |
标准差与方差 |
min,max |
最小值和最大值 |
argmin,argmax |
最小值和最大值的位置 |
cumsum |
从0开始元素累计和(等差数列求和) |
cumprod |
从1开始元素累计积(阶乘) |
一行代码计算1 2 ....10数之和
布尔数组的方法
sum通常可以计算布尔值数组中true的个数,对于布尔数组,有两个非常常用的方法any和all。any用于检查数组中是否至少有一个true,如果有一个以上那么它就会返回true,any检查是否每一个值都是true,如果有一个不是true那就返回false。
排序
和Python类建列表相似,numpy数组可以使用sort方法按照位置排序
唯一值和其他的逻辑集合
介绍:
numpy包含一些针对一维ndarray的基础集合操作。常用的一个方法是np.unique返回的是包含数组唯一的排好序的集合,首先集合肯定是唯一的,那么我们在进行排序,解决它的无序性
应用场景假设有一个数组里面有很多值,而且有大量的重复的值我们需要对其进行排序,就可以使用这个方法了,下面是一些数组集合的操作
数组集合操作:
unique(x) 计算X的唯一值,并排序 intersect1d(x,y) 计算X和Y的交集,并排序 union1d(x,y) 计算X和Y的并集,并排序 in1d(x,y) 计算X中的元素是否包含在Y中,返回一个布尔值数组 setdiff1d(x,y) 差集,在X中但不在Y中的元素 setxor1d(x,y) 异或集,在X或Y中,但不属于X,Y交集的元素
到此这篇关于Python中的Numpy 面向数组编程常见操作的文章就介绍到这了,更多相关Python Numpy 内容请搜索Devmax以前的文章或继续浏览下面的相关文章希望大家以后多多支持Devmax!