1.3.3.3 面具数组(maskedarray): 处理缺失值(的传播)
- 对于浮点不能用NaN,但是面具对所有类型都适用:
In [207]:
x = np.ma.array([1, 2, 3, 4], mask=[0, 1, 0, 1])
x
Out[207]:
masked_array(data = [1 -- 3 --],
mask = [False True False True],
fill_value = 999999)
In [208]:
y = np.ma.array([1, 2, 3, 4], mask=[0, 1, 1, 1])
x + y
Out[208]:
masked_array(data = [2 -- -- --],
mask = [False True True True],
fill_value = 999999)
- 通用函数的面具版本:
In [209]:
np.ma.sqrt([1, -1, 2, -2])
Out[209]:
masked_array(data = [1.0 -- 1.4142135623730951 --],
mask = [False True False True],
fill_value = 1e+20)
注:有许多其他数组的兄弟姐妹
尽管这脱离了Numpy这章的主题,让我们花点时间回忆一下编写代码的最佳实践,从长远角度这绝对是值得的:
最佳实践
- 明确的变量名(不需要备注去解释变量里是什么)
- 风格:逗号后及=周围有空格等。
在Python代码风格指南及文档字符串惯例页面中给出了相当数据量如何书写“漂亮代码”的规则(并且,最重要的是,与其他人使用相同的惯例!)。
- 除非在一些及特殊的情况下,变量名及备注用英文。