【发布时间】:2015-08-17 16:59:28
【问题描述】:
我正在寻找一种有效的方法来检查某个 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)
我目前的解决方案里面肯定有太多的 for 循环和 if 语句。我已经看过 numpy 数组逻辑操作,但在我看来这些并不完美,因为我的数组没有相同的长度,也不一定有相同的动物顺序!?
【问题讨论】:
-
完美,正是我锁定的目标。将其作为答案发布,可能与 np.mean(np.in1d(array_1, array_2)) == 1 一起发布,以防所有条目都是 True 并且我将其标记为正确的
-
您可以简单地使用:
np.in1d(array_1, array_2).all()。
标签: python arrays numpy compare elementwise-operations