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

check if any values in 2 arrays are equal

提问人:Katharina Baur 提问时间:9/1/2019 最后编辑:DjaouadNMKatharina Baur 更新时间:9/1/2019 访问量:68

问:

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

例如

第一个阵列:array([1,4,7,5,3])

第二个阵列:array([5,2,9,0,6])

然后我想知道,这发生在两个数组中。5

我猜

array1 == array2

不是检查这一点的正确操作。

如果 2 个数组中有相同的 2 个元素,我该如何测试?

提前致谢!

数组 numpy 比较 相等

评论


答:

0赞 Grzegorz Skibinski 9/1/2019 #1

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

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

或者:

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

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

len(list(set(arr_1) & set(arr_2)))
0赞 willeM_ Van Onsem 9/1/2019 #2

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

>>> np.isin(array1, array2).any()
True
0赞 Nico Schlömer 9/1/2019 #3

首先想到的是使用并检查生成的数组中是否有零: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)