【问题标题】:Create a boolean mask from the intersection of 2 arrays从 2 个数组的交集创建一个布尔掩码
【发布时间】:2021-03-25 19:25:49
【问题描述】:

给定 2 个形状相同的数组(实际上是矩阵),从它们的交集中提取布尔掩码的最佳方法是什么?也就是说,如果每个矩阵位置的项目相等,则为 True,如果项目比较失败,则为 False。

我试图避免在语法上迭代数组,似乎必须有一个运算符或优雅的方式来对它们进行布尔比较,从而产生一个掩码。

一旦生成掩码,我们的想法是使用它返回匹配位置的索引。

这些项目是非数字的(字符串)。

【问题讨论】:

  • 当你说“数组”时,你真的是指嵌套列表吗?还是您使用的是 NumPy 之类的东西?

标签: python arrays matrix


【解决方案1】:

如果您的两个数组(我们称它们为 A 和 B)是 numpy 数组,您可以这样做:

Mask = A==B
print("Mask = ",Mask)

【讨论】:

  • 这看起来很有希望;期待尝试。
【解决方案2】:

在哪里使用 numpy

https://numpy.org/doc/stable/reference/generated/numpy.where.html

image = np.where(matrix2, WhiteImage, matrix1).astype(np.uint8)

你需要创建第三个形状相同的矩阵,让它像

WhiteImage = np.zeros((height,width,X), np.uint8)

如果您的数组不是 numpys,只需使用转换它

matrix1 = np.array(matrix)

【讨论】:

  • 似乎比其他建议的答案更冗长,但也会尝试这个。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2018-10-02
  • 1970-01-01
  • 1970-01-01
  • 2012-09-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多