遍历 numpy.ma 数组,忽略掩码值

Posted

技术标签:

【中文标题】遍历 numpy.ma 数组,忽略掩码值【英文标题】:Iterate over numpy.ma array, ignoring masked values 【发布时间】:2015-08-20 15:57:18 【问题描述】:

我想只迭代 np.ma.ndarray 中未屏蔽的值。

以下内容:

import numpy as np
a = np.ma.array([1, 2, 3], mask = [0, 1, 0])
for i in a:
    print i

我明白了:

1
--
3

我想得到以下内容:

1
3

似乎np.nditer() 可能是要走的路,但我没有找到任何可能指定这一点的flags。我该怎么做?谢谢!

【问题讨论】:

掩码数组实际上是 2 个数组,一个是基数,一个是掩码。通用numpy 代码只适用于基础;这将包括nditer。只有ma 方法/函数可以使用掩码。 这为我阐明了 nditer arraymask 标志的意图。谢谢。 您也许可以将ma datamask 分别传递给nditer,使用此标志来识别后者。但我还没有探索过这个功能。 【参考方案1】:

你想使用a.compressed()

import numpy as np
a = np.ma.array([1, 2, 3], mask = [0, 1, 0])
for i in a.compressed():
    print i

给出:

1
3

【讨论】:

有趣。去掉一些细节,a.compressed() 最终做了a._data.compress(~a._mask)

以上是关于遍历 numpy.ma 数组,忽略掩码值的主要内容,如果未能解决你的问题,请参考以下文章

C# 二进制掩码

Google 课堂课程的问题。courseWork.list “field_mask:未知字段掩码值:individual_students_options”

如何运行掩码数组的线性回归

使用掩码实现输入

已知IP地址和子网掩码 求网络号、子网号、主机号

按位计数递增顺序遍历整数的每个位掩码[重复]