删除numpy数组中的掩码元素

Ric*_*all 5 python arrays numpy list

我有一些包含掩盖元素的数组(Numpy.MaskedArray例如)

data = [0,1,masked,3,masked,5,...]
Run Code Online (Sandbox Code Playgroud)

掩模不遵循规则图案的地方.

我想遍历数组并简单地删除所有被屏蔽的元素以结束:

data = [0,1,3,5,...]
Run Code Online (Sandbox Code Playgroud)

我尝试了一个循环:

for i in xrange(len(data)):
    if np.ma.is_masked(data[i]):
        data.pop(i)
Run Code Online (Sandbox Code Playgroud)

但我得到错误: local variable 'data' referenced before assignment

我是否必须创建一个新数组并添加未屏蔽的元素?或者是否有MaskedArray可以自动执行此操作的功能?我看过文档,但对我来说并不明显.

谢谢!

Rom*_*est 11

使用掩码按位反转 ~

data = data[~data.mask]
Run Code Online (Sandbox Code Playgroud)

  • @Vlad 和 Eric,你能描述一下你是如何确定它们是不同的数组类型的吗?新用户可能不知道如何检查对象的额外属性。`np.array_equal(data.compressed(), data[~data.mask])` 解析为 `True`。 (2认同)

Eri*_*ric 10

data.compressed() 是你正在寻找的功能