在 Python 中,我有一个不同大小的数组的列表。我想知道列表中包含的所有数组的交集。例如:
import numpy as np
array0 = [0,1,2,3,4,5,6]
array1 = [0,2,3,5,6,7,8,9,10]
array2 = [4,5,6]
array3 = [5,6,7,8,9,10,11,12,13]
array_list = [array0, array1, array2, array3]
np.intersect1d
我想使用类似跨所有数组的函数array_list
并获取所有数据数组的交集。快速浏览一下,答案是
intersection = np.array([5,6])
我尝试过使用列表理解,例如:
np.intersect1d([arraylist[x] for x in np.arange(len(arraylist))]),
但 Numpy 需要 2 个参数,而不是我提供的参数。出于类似的原因,
list(filter(lambda x:x in [x for x in arraylist]))
不起作用——filter
需要 2 个参数,但只得到一个。
您可以使用
reduce()
fromfunctools
模块与多个列表相交np.intersect1d
:输出:-
或用于
sets
将它们相交输出:-