【问题标题】:Operations in Masked Numpy Arrays掩码 Numpy 数组中的操作
【发布时间】:2014-03-03 18:06:21
【问题描述】:

我有两个屏蔽的 numpy 数组。这些是图片。

我正在尝试从另一个中减去一个。

如果我做标准的减法运算符,

ma1 - ma2 

它将减去它们,就好像它们没有被屏蔽一样(不考虑它们的屏蔽)。我希望他们用面具减去。

有人知道如何从彼此中减去掩码的 numpy 数组吗?

【问题讨论】:

  • 你最好展示一些示例输入和输出;)
  • 您对仅在其中一个数组中被屏蔽的条目有何期望?我认为这是模棱两可的,您应该在操作后设置掩码以明确应该使用什么掩码。

标签: python arrays numpy scipy


【解决方案1】:

它应该工作。当您对掩码数组进行操作时,它需要操作中涉及的掩码的并集。下面的案例展示了numpy 如何选择在两个掩码数组之间进行减法运算时将更改的值:

a1 = np.random.random((100,100))
a2 = np.random.random((100,100))

a1 = np.ma.array(a1, mask=a1<0.5)
a2 = np.ma.array(a2, mask=a2<0.5)

umask = np.logical_or(a1.mask, a2.mask) # <-- union of the masks

test = a1.data - a2.data
test[umask] = a1.data[umask] # <-- "canceling" the operation according to the
                             #     combined mask

np.allclose((a1-a2), test)
#True

如你所见,结果是一样的……

【讨论】:

  • 你确定这有效吗?我还在尝试,遇到同样的问题
  • 顺便说一句,两个面具都在同一个区域
  • @Highschooler 你的数组有输入样本吗?也许您可以编辑您的问题添加此信息...
猜你喜欢
  • 1970-01-01
  • 2018-04-09
  • 2021-04-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-10-12
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多