检查2个数组是否至少有一个共同元素的最简单方法是什么?使用numpy是可能的,但不一定。
到目前为止我找到的代码只检查具体的共同元素。而我只需要检查真或假条件。
答案 0 :(得分:3)
假设输入数组为A
和B
,您可以将np.in1d
与np.any
一起使用,就像这样 -
import numpy as np
np.in1d(A,B).any()
您也可以使用NumPy's broadcasting capability
,就像这样 -
(A.ravel()[:,None] == B.ravel()).any()
答案 1 :(得分:3)
您可以使用any
:
any(x in set(b) for x in a)
这是写作的简短但是,正如Jon正确地指出它将为set(b)
的每个元素创建一个新的a
,以下几行将避免这样做:
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)
答案 2 :(得分:3)
我会选择集。
def doArraysIntersect(array1, array2):
return bool(set(array1) & set(array2))
答案 3 :(得分:2)
def lists_overlap(a, b):
for i in a:
if i in b:
return True
return False
答案 4 :(得分:0)
在JavaScript中
const findCommon = (arr1, arr2) => {
let set = new Set(arr1)
arr2.forEach((item) => {
if (set.has(item)) return true
})
return false
}
基本上,我已经做了每个人在这里提出的建议。如果您正在寻找JS解决方案...