比较包含字符串的numpy数组

时间:2015-08-17 08:52:22

标签: python arrays numpy compare elementwise-operations

我正在寻找一种有效的方法来检查某个numpy数组中的所有字符串条目是否都包含在第二个numpy数组中。请参阅下面的示例。 Array_1将是应该检查的最小动物。如果没有动物或部分动物被包含,该函数应返回False,如果包含所有这三个动物(按任意顺序),则返回True。

import numpy as np
array_1 = np.array(['cat', 'dog', 'goat'])

array_2 = np.array(['cat', 'monkey', 'zebra', 'pig', 'goat', 'horse', 'dog'])
array_3 = np.array(['peacock', 'horse', 'zebra', 'pig', 'cat', 'horse', 'dog', 'sheep'])

compare_function(array_1, array_2)

我当前的解决方案对于循环和if语句来说肯定太多了。我已经看过numpy数组逻辑运算,但在我看来那些并不完美,因为我的数组不具有相同的长度而且不一定是相同的动物顺序!?

2 个答案:

答案 0 :(得分:3)

如果您不介意使用set,那么您可以使用内置函数set将数组转换为set(),然后使用小于 - {进行子集检查{1}}或大于运算符 - <。例如,小于运算符检查左侧的集合是否是右侧的集合的子集。相反,大于运营商。

示例 -

>

还有一种名为 - In [8]: import numpy as np In [9]: array_1 = np.array(['cat', 'dog', 'goat']) In [10]: In [10]: array_2 = np.array(['cat', 'monkey', 'zebra', 'pig', 'goat', 'horse', 'dog']) In [11]: array_3 = np.array(['peacock', 'horse', 'zebra', 'pig', 'cat', 'horse', 'dog', 'sheep']) In [12]: In [12]: set(array_1) <= set(array_2) Out[12]: True In [13]: set(array_1) <= set(array_3) Out[13]: False 的方法,您可以使用它来检查子集。

示例 -

.issubset()

答案 1 :(得分:0)

实现这一目标的最简单方法可能是将数组转换为set并使用issubset方法。

相关问题