【问题标题】:Items in array A but not in set B数组 A 中但不在集合 B 中的项目
【发布时间】:2018-02-20 08:33:15
【问题描述】:

我有以下一组功能:

|            | Sweet | Sour  | Bitter | Salty | Seeds |


| Grapefruit |    1     |    1     |    1      |    0     |    1     |

| Banana     |    1     |    0     |    0      |    0     |    0     |


grapefruit_features = np.array([True,  True,  True,  False, True ])
banana_features     = np.array([True,  False, False, False, False])

给定两个布尔数组(a 和 b),我需要编写一个函数来告诉我 a 有哪些 b 没有的特征。所以葡萄柚有香蕉没有的特性。 (葡萄柚 - 香蕉)。它应该返回 3。{在这种情况下(香蕉 - 葡萄柚)应该返回 0,因为香蕉没有葡萄柚没有的特征}

我只有以下代码,它描述了哪些功能不相等,我需要帮助来修复它。

def differences(a, b):
   return np.sum(np.all([a != b] ,axis=0))

【问题讨论】:

  • 您的示例代码用于在 a 不等于 b 时进行计数,但您想在 a 为真而 b 不为真时进行计数。你会如何做出改变?
  • 您想将 a 而不是 b 转换为布尔表达式

标签: python arrays boolean difference


【解决方案1】:

AND ab 的否定并求和,这正是您正在寻找的布尔逻辑等价物。

def differences(a, b):
    return (a & ~b).sum()

In [80]: differences(grapefruit_features, banana_features)
Out[80]: 3

In [81]: differences(banana_features, grapefruit_features)
Out[81]: 0

【讨论】:

  • 感谢您的帮助!
猜你喜欢
  • 1970-01-01
  • 2019-01-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-08-25
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多