1.3.3.3 面具数组(maskedarray): 处理缺失值(的传播)

  • 对于浮点不能用NaN,但是面具对所有类型都适用:

In [207]:

  1. x = np.ma.array([1, 2, 3, 4], mask=[0, 1, 0, 1])
  2. x

Out[207]:

  1. masked_array(data = [1 -- 3 --],
  2. mask = [False True False True],
  3. fill_value = 999999)

In [208]:

  1. y = np.ma.array([1, 2, 3, 4], mask=[0, 1, 1, 1])
  2. x + y

Out[208]:

  1. masked_array(data = [2 -- -- --],
  2. mask = [False True True True],
  3. fill_value = 999999)
  • 通用函数的面具版本:

In [209]:

  1. np.ma.sqrt([1, -1, 2, -2])

Out[209]:

  1. masked_array(data = [1.0 -- 1.4142135623730951 --],
  2. mask = [False True False True],
  3. fill_value = 1e+20)

:有许多其他数组的兄弟姐妹

尽管这脱离了Numpy这章的主题,让我们花点时间回忆一下编写代码的最佳实践,从长远角度这绝对是值得的:

最佳实践

  • 明确的变量名(不需要备注去解释变量里是什么)
  • 风格:逗号后及=周围有空格等。

Python代码风格指南文档字符串惯例页面中给出了相当数据量如何书写“漂亮代码”的规则(并且,最重要的是,与其他人使用相同的惯例!)。

  • 除非在一些及特殊的情况下,变量名及备注用英文。