比较两个不同大小的数组(A的分量在B中)

时间:2019-05-24 06:59:49

标签: python arrays numpy

我想做的是有两个不同大小的数组 让

A = [[1,3,1],[2,4,1],[3,3,1]]
B = [[1,3,1],[2,5,1],[2,3,1],[3,3,1],[5,5,1]]

B的行可能会在A中( [1,3,1], [3,3,1] is in A )

我要从这些数组中做的是比较两个数组以构造 数组“ C”,它由A中的B行组成。

C = [[1,3,1], [3,3,1]]

我尝试过pandas.isin,但是失败了。任何想法都会很有帮助

3 个答案:

答案 0 :(得分:2)

使用set.intersection

例如:

A = [[1,3,1],[2,4,1],[3,3,1]]
B = [[1,3,1],[2,5,1],[2,3,1],[3,3,1],[5,5,1]]

A = map(tuple, A)
B = map(tuple, B)
print(set(A).intersection(set(B)))

输出:

{(3, 3, 1), (1, 3, 1)}

答案 1 :(得分:0)

您可以从两个列表中获得共同的元素:

>>> A = [[1,3,1],[2,4,1],[3,3,1]]
>>> B = [[1,3,1],[2,5,1],[2,3,1],[3,3,1],[5,5,1]]
>>> print([data for data in A if data in B])
[[1, 3, 1], [3, 3, 1]]

答案 2 :(得分:0)

或使用filter

print(list(filter(lambda x: x in A.tolist(), B.tolist())))

输出:

[[1, 3, 1], [3, 3, 1]]