什麼是檢查2個數組是否至少有一個共同元素的最簡單方法?使用numpy是可能的,但不一定。檢查2個數組是否至少有一個共同的元素?
我到目前爲止發現的代碼只檢查具體的通用元素。而我只需要檢查True或False情況。
什麼是檢查2個數組是否至少有一個共同元素的最簡單方法?使用numpy是可能的,但不一定。檢查2個數組是否至少有一個共同的元素?
我到目前爲止發現的代碼只檢查具體的通用元素。而我只需要檢查True或False情況。
假設輸入數組爲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()
您可以使用any
:
any(x in set(b) for x in a)
這是短期寫的,但正如喬恩正確指出將在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)
這將會把'bool(set(first)&set(second))'設置爲'bool(set *非常高效 –
@JonClements同意,最好將'set(b)'保存在一個變量中。 –
def lists_overlap(a, b)
for i in a:
if i in b:
return True
return False
這有一個非常討厭的最壞情況和平均運行時間... –
我會套去。
def doArraysIntersect(array1, array2):
return bool(set(array1) & set(array2))
數組的長度是否相同? – EdChum
如果你可以使用內存開銷 – Cassum