【问题标题】:How can I combine masks on a masked array in Numpy?如何在 Numpy 的蒙版数组上组合蒙版?
【发布时间】:2016-03-14 20:20:18
【问题描述】:

我想通过使用 masked_where 方法组合两个掩码来为 numpy 数组创建一个掩码。

import numpy as np
a = np.arange(10)
#=> array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])
a = (ma.masked_less(a,3)) && (ma.masked_greater_equal(a,8))

这会导致“无效语法”错误。相反,我期待一个像这样的数组:

array([-- -- -- 3 4 5 6 7 -- --])

如何做到这一点?

【问题讨论】:

  • @Mat 在我的编辑下,这个问题在 Stack Overflow 上应该没问题,所以让我们将它迁移到那里。而“无效语法”实际上就是整个错误消息(嗯,从技术上讲,错误也指出了错误的位置)。

标签: python


【解决方案1】:

Python 按位和运算符是&,而不是&&

import numpy as np
a = np.arange(10)
a = np.ma.masked_less(a, 3) & np.ma.masked_greater_equal(a, 8)

会起作用的。

【讨论】:

    【解决方案2】:

    我觉得这比你的ma.masked... 更优雅:

    a = np.arange(10)
    #=> array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])
    print a[(a<8)*(a>=3)]
    #=> array([3 4 5 6 7])
    

    无论如何,在您的版本中,您需要np.ma 而不是纯ma

    ...或者您真的希望array([-- -- -- 3 4 5 6 7 -- --]) 中的空白被填充,例如None

    【讨论】:

    • IPython pylab 会自动从 numpy 导入 ma 之类的东西。
    • 不,他在上面一行写了import numpy as np,并使用了np.arange()。所以不,你错了。你好,伊利亚^^
    • 错过了导入,所以是的。你好!
    • 我同意伊利亚的观点
    猜你喜欢
    • 2023-04-03
    • 2011-08-27
    • 1970-01-01
    • 1970-01-01
    • 2012-12-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多