忽略负值和极值,Masked数组的一个用途是忽略取值为负数的数组元素。例如,求取数组的对数时需要忽略其中的负值。Masked数组的另一个用途是排除极值,此时需要给出极值的上下边界。
在本章中,我们将把Masked数组的上述功能应用于对股价数据的处理。下载股价数据的步骤在前面的章节中已经介绍过了,此处不再赘述。
具体步骤
下面将对一个包含负数的数组取对数。
- 对负数取对数。
首先创建一个包含3的倍数的数组。
然后创建一个全1数组,其大小和股价数据数组相同。
利用前面介绍的索引技巧,把signs
数组中索引值为3的倍数的数组元素置为负数。
最后对包含负值的股价数据数组取对数。
对于AAPL股票,将有如下的打印输出。
- 忽略极值。
我们把比均值小或大一个标准差以上的数定义为极值。根据这个定义,可以使用如下代码屏蔽极值。
这段代码会打印出数组inside
的前10个元素。
让我们绘制三组数据:原始的股价数据;对股价数据取对数,再对其结果进行指数运算后,得到的数据;基于标准差屏蔽原始数据中的极值后,得到的数据。最终结果如下图所示。
攻略小结
numpy.ma模块中的函数用来屏蔽不合法的数组元素。例如,log
函数和sqrt
函数不允许使用负值。对被屏蔽的值的后续处理,有点像数据库和其他编程语言中的NULL
。所有对被屏蔽的值的操作,其结果还是一个被屏蔽的值。