数组A中的项目但不在集合B中

时间:2018-02-20 08:33:15

标签: python arrays boolean difference

我有以下功能集:

|            | 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),我需要编写一个函数来告诉我b所具有的特征数量。因此,葡萄柚具有香蕉不具备的特征。 (葡萄柚 - 香蕉)。它应该返回3. {在这种情况下(香蕉 - 葡萄柚)应该返回0,因为香蕉没有grapfruit没有的功能}

我只有以下代码描述哪些功能不相同,我需要帮助来解决它。

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

1 个答案:

答案 0 :(得分:3)

AND a否定b并找到总和,这正是布尔逻辑等同于您正在寻找的内容。

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