1.Masked arrays数据介绍
掩码数组是包括可能缺少或无效项的数组。在许多情况下,数据集可能不完整或被无效数据污染。例如,传感器可能无法记录数据,或记录了无效的值。numpy.ma模块通过引入掩码数组提供了一种方便的方法来解决这个问题。
掩码数组是标准 numpy.ndarray 和掩码的组合.
当掩码的一个元素为False时,关联数组的相应元素有效,并被称为已解除掩码。当掩码的一个元素为True时,关联数组的相应元素被称为掩码(无效)。
2.掩码数组基本操作
参考官网文档:https://numpy.org/devdocs/reference/routines.ma.html
(1)创建掩码数组
import numpy as np
a = np.ma.array([1, 2, 3], mask = [0, 1, 0])
(2)Filling a masked array:ma.set_fill_value(a, fill_value)[source]
将NaN填充为0:
x = np.ma.array(np.arange(9).reshape(3, 3), mask=[[1, 0, 0],
[1, 0, 0],
[0, 0, 0]])
x.filled(fill_value=0)
(3)只访问有效元素
法1:可以使用numpy.logical_not函数或简单使用~运算符计算掩码的逆
x = ma.array([[1, 2], [3, 4]], mask=[[0, 1], [1, 0]])
x[~x.mask]
法2:compressed方法:x.compressed()
compressed的返回值通常为1维。
3.掩码数组应用
参考资料:https://github.com/wzy6642/numpy-translate/blob/master/ma.ipynb
(1)利用特殊值表示缺失值
- 如利用平均值表示缺失值:
mx.filled(mx.mean())
- 对缺失值进行填充:
mx.filled(mx.mean(0))
缺失值NaN = 0;
参考资料:
1.numpy.ma详解
2.numpy.ma模块介绍-GitHub:https://github.com/wzy6642/numpy-translate/blob/master/ma.ipynb
3.官网资料:https://numpy.org/doc/stable/reference/maskedarray.html