【问题标题】:Assign to masked numpy array without removing mask?在不删除掩码的情况下分配给掩码的 numpy 数组?
【发布时间】:2016-07-27 22:10:25
【问题描述】:

我想分配给(一片)一个蒙面的 numpy 数组,但不修改掩码。 (分配通常会清除掩码(除非它是“硬”),这似乎与掩码的目的完全相反,但这就是我们必须使用的。)我也希望这个例程适用于普通的未掩码数组。

有没有比保存和恢复蒙版更好的方法来做到这一点?

a = np.ma.array([0, 1, 2], mask=[0, 1, 0])
mask = a.mask.copy() if np.ma.is_masked(a) else None        # Have to copy because it might be shared
a[a < 2] = -1
if mask is not None:
    a.mask = mask
print(a, a.data)
# [-1 -- 2] [-1 -1 2]

这是 Python 2,numpy 1.11.1。

【问题讨论】:

    标签: python numpy


    【解决方案1】:

    我认为你想要的可以通过:

    a.data[a < 2] = -1
    

    【讨论】:

      【解决方案2】:

      在研究这个问题时,我找到了答案:

      np.copyto(a, -1, where=a < 2)
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2018-04-09
        • 1970-01-01
        • 2019-10-12
        • 1970-01-01
        • 1970-01-01
        • 2017-04-23
        • 1970-01-01
        相关资源
        最近更新 更多