【问题标题】:Intersect two boolean arrays for True为 True 相交两个布尔数组
【发布时间】:2017-11-18 14:25:20
【问题描述】:

拥有 numpy 数组

a = np.array([ True, False, False,  True, False], dtype=bool)
b = np.array([False,  True,  True,  True,  False], dtype=bool)

我怎样才能使两者相交以便只有True 值匹配?我可以这样做:

a == b
array([False, False, False,  True,  True], dtype=bool)

但最后一项是True(可以理解,因为两者都是False),而我希望结果数组仅在第4个元素中为True,类似于:

array([False, False, False,  True,  False], dtype=bool)

【问题讨论】:

  • np.logical_and
  • 好的,到目前为止,这三个 cmets 应该是答案而不是 cmets,其中两个是错误的。

标签: python python-3.x numpy


【解决方案1】:

Numpy 为此提供了logical_and()

a = np.array([ True, False, False,  True, False], dtype=bool)
b = np.array([False,  True,  True,  True,  False], dtype=bool)

c = np.logical_and(a, b)
# array([False, False, False, True, False], dtype=bool)

更多信息请访问Numpy Logical operations

【讨论】:

  • 甜蜜。直到现在我才知道np.logical_and()。这按预期工作。 a and b 在 cmets 中对问题的建议不起作用。
  • @PedroA andnotor 将不起作用,因为 Python 处理 NumPy 无法覆盖的逻辑操作的方式(表达式除外)。但是,您可以使用常见的a != b 进行 XOR。
  • 在布尔数组上,您还可以使用& 作为logical_and 的快捷方式,| 作为logical_or 的快捷方式,以及^ 作为logical_xor 的快捷方式。
猜你喜欢
  • 2021-06-05
  • 1970-01-01
  • 2021-09-17
  • 1970-01-01
  • 2020-08-30
  • 2017-12-07
  • 1970-01-01
  • 2014-01-19
  • 1970-01-01
相关资源
最近更新 更多