目录
28、快速排序:np.sort()和np.argsort()
二、主要内容
22、比较,遮罩和布尔逻辑
考虑下面的场景,假设我们有2014年西雅图市的日降水量,
这个直方图让我们大致了解了数据的样子,但我们想要回答一些深入的问题,例如:
一年中有多少雨天?
那些雨天的平均降水量是多少?
降雨量超过半英寸的天数有多少?
Numpy还将比较操作符实现为元素级的ufuncs。
23、使用布尔数组
在Python中,True和False分别被解释为1和0。
当我们想要检查所有值是否为真时,可以使用np.any()或np.all()。
Numpy将Python的按位逻辑操作符&、|、^和~重载为对布尔数组进行元素级处理的虚函数。
例如:
24、布尔数组作为遮罩
更强大的模式是使用布尔数组作为掩码,以选择数据本身的特定子集。
屏蔽操作返回一个一维数组,其中填充了掩码数组为True的所有位置的值。
回到我们降雨量的问题,通过组合布尔运算、屏蔽运算和聚合,我们可以非常快速地回答西雅图雨水数据的一些统计问题。
25、花式索引
通过传递索引数组来代替单个标量,允许我们非常快速地访问和修改数组值的复杂子集。
结果的形状反映索引数组的形状,而不是被索引的数组的形状。
26、组合索引
27、使用花式索引修改值
28、快速排序:np.sort()和np.argsort()
默认情况下,np.sort()使用O[NlogN],这是一种快速排序算法,不过也可以使用合并排序和堆排序。
对于大多数应用程序,默认的快速排序已经足够了。
29、按行或列排序
30、分区排序
有时我们对整个数组的排序不感兴趣,而只是想找到数组中最小的k个值