我有以下功能集:
| | 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))
答案 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