【问题标题】:Iterate over numpy.ma array, ignoring masked values遍历 numpy.ma 数组,忽略掩码值
【发布时间】: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,使用此标志来识别后者。但我还没有探索过这个功能。

标签: python numpy iteration


【解决方案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)
猜你喜欢
  • 2012-08-10
  • 1970-01-01
  • 2020-07-23
  • 1970-01-01
  • 1970-01-01
  • 2014-11-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多