有没有一种最简单的方法来检查两个数组是否至少有一个元素相同?使用numpy是可能的,但不是必须的。
到目前为止,我找到的代码只检查具体的公共元素。而我只需要检查True或False条件。
A
和B
,您可以使用np.in1d
与np.any
,如下所示 -import numpy as np
np.in1d(A,B).any()
NumPy的广播功能
,例如:(A.ravel()[:,None] == B.ravel()).any()
any
。any(x in set(b) for x in a)
这段代码很短,但正如Jon所指出的那样,它会为a
中的每个元素创建一个新的set(b)
,以下代码可以避免这种情况:
sb = set(b)
any(x in sb for x in a)
如果b
是最大的数组(相比于a
),性能将会提高:
(smaller,bigger) = sorted([a,b], key=len)
sbigger = set(bigger)
any(x in sbigger for x in smaller)
b
转换为一个 set
,这样并不高效。 - Jon Clementsset(b)
存储在一个变量中。 - Pablo Francisco Pérez Hidalgodef doArraysIntersect(array1, array2):
return bool(set(array1) & set(array2))
def lists_overlap(a, b):
for i in a:
if i in b:
return True
return False
const findCommon = (arr1, arr2) => {
let set = new Set(arr1)
arr2.forEach((item) => {
if (set.has(item)) return true
})
return false
}
基本上,我已经做了这里每个人提出的建议。如果您正在寻找JS解决方案...
bool(set(first) & set(second))
。 - Cassum