检查2个数组中的任何值是否相等

时间:2019-09-01 09:00:34

标签: arrays numpy comparison equality

我想检查是否可以在第二个数组中找到任何元素(无论其位置如何)。

例如

第一个数组:array([1,4,7,5,3])

第二个数组:array([5,2,9,0,6])

然后我想找出,5出现在两个数组中。

我猜是

array1 == array2

不是检查此内容的正确操作。

我如何测试2个数组中是否有相同的2个元素?

谢谢!

3 个答案:

答案 0 :(得分:0)

尝试获得2个数组的交集:

list(set(arr_1) & set(arr_2))

或者:

list(set(arr_1).intersection(set(arr_2)))

要计算重叠元素-只需获取相交的长度即可:

len(list(set(arr_1) & set(arr_2)))

答案 1 :(得分:0)

您可以在此处使用np.isin(...) [numpy-doc]来检查一个数组的值是否在另一个数组中,然后使用.any() [numpy-doc]来检查是否至少有一个这样的项目:

>>> np.isin(array1, array2).any()
True

答案 2 :(得分:0)

首先想到的是使用numpy.add.outer并检查结果数组中是否有零:

import numpy

a = numpy.random.randint(0, 10, 4)
b = numpy.random.randint(0, 10, 4)

print(a, b)

print(numpy.add.outer(a, -b))
has_dups = numpy.any(numpy.add.outer(a, -b) == 0)
print(has_dups)