关于python:测试数组的每个元素是否在另一个数组中

Test if every element of an array is in another array

本问题已经有最佳答案,请猛点这里访问。

假设我有两个数组,xy,其中yx的一个子集:

1
2
x = [1, 2, 3, 4, 5, 6, 7, 8, 9]
y = [3, 4, 7]

我想返回一个数组,比如:

1
ret = [False, False, True, True, False, False, True, False, False]

如果y只是一个数字,那就足够简单了(x == y),但我尝试了等效的x in y,但没有用。当然,我可以用for循环来完成,但我宁愿有一个更整洁的方法。

我标记这只熊猫是因为x实际上是一个熊猫系列(数据框中的一列)。y是一个列表,但如果需要,可以将其设置为numpy数组或序列。


iiuc:

1
2
s = pd.Series(x)
s.isin(y)

输出:

1
2
3
4
5
6
7
8
9
10
0    False
1    False
2     True
3     True
4    False
5    False
6     True
7    False
8    False
dtype: bool

和返回的列表:

1
s.isin(y).tolist()

输出:

1
[False, False, True, True, False, False, True, False, False]

1
2
3
x = [1, 2, 3, 4, 5, 6, 7, 8, 9]
y = [3, 4, 7]
print([x in y for x in x])


本集的交叉口,也可以是你的。

1
2
3
4
5
a = [1,2,3,4,5,9,11,15]
b = [4,5,6,7,8]
c = [True if x in list(set(a).intersection(b)) else False for x in a]

print(c)