当前位置: 首页 > 知识库问答 >
问题:

测试一个数组的每个元素是否在另一个数组中[重复]

楚畅
2023-03-14

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

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

我想返回如下数组:

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

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

我已经标记了这个熊猫,因为x实际上是一个熊猫系列(数据框中的一列)。y是一个列表,但是如果需要,可以制作成一个NumPy数组或系列。


共有3个答案

谢鸿
2023-03-14

设置交叉点也可以为您做到这一点。

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)
巫马望
2023-03-14

IIUC:

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

输出:

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

并返回列表:

s.isin(y).tolist()

输出:

[False, False, True, True, False, False, True, False, False]
双元魁
2023-03-14
x = [1, 2, 3, 4, 5, 6, 7, 8, 9]
y = [3, 4, 7]
print([x in y for x in x])
 类似资料:
  • 问题内容: 我有两个数组,我想检查是否每个元素都在中。如果元素的值在中重复,则该元素的值必须相等。最好的方法是什么? 问题答案: 一种选择是对两个数组进行排序,然后遍历两个数组,然后比较元素。如果在超级袋中未找到子袋候选中的元素,则前者不是子袋。排序通常为O(n *log(n)),比较为O(max(s,t)),其中 s 和_t_是数组大小,总时间复杂度为O(m * log(m)) ,其中m =ma

  • 我实际上有两种类型的数据: 我想用Hamcrest在我的身体响应中测试我的放心请求后,b(元素接收)是否包含来自a的一个或多个元素(

  • 问题内容: 我在PHP中有两个数组,如下所示: 人: 通缉犯: 如何检查是否 所有 的的 人们 元素是在 通缉犯 阵列? 在此示例中,它应该返回,因为在 通缉犯中 。 问题答案: 您可以使用。

  • 问题内容: 我试图遍历2个数组,外部数组则比另一个数组更长。它将循环遍历第一个,如果第二个数组不包含该int,它将返回false。但是我不知道该怎么做。这是我到目前为止所拥有的: 运行时出现此错误: 我想知道是否可以不使用嵌套循环(如上)来完成。我知道我做错了,如果有人可以在此问题上提供帮助,那就太好了。我也不确定要在Java文档中寻找什么类。 问题答案: 您可以检查较大的数组是否包含较小数组中的

  • 问题内容: 我有两个一维数组x和y,一个比另一个小。我试图找到x中y的每个元素的索引。 我发现有两种简单的方法可以做到这一点,第一种很慢,第二种需要占用大量内存。 记忆猪 是否有更快的方法或更少的内存密集型方法?理想情况下,搜索将利用以下事实:我们不是在列表中搜索一件事,而是在搜索许多东西,因此稍微适合并行化。如果您不假设y的每个元素实际上都在x中,则可获得加分。 问题答案: 正如Joe King

  • 问题内容: 说我有这些二维数组A和B。 如何从B中删除A中的元素。(集合论中的补语:AB) 更准确地说,我想做这样的事情。 问题答案: 基于this solution对,这里是用更少的内存占用与NumPy基础的解决方案,并与大型阵列工作时,可能是有益的- 样品运行- 在大型阵列上的运行时测试- 具有基础解决方案的时间- 基于更少内存占用量的定时解决方案- 进一步提升性能 通过将每一行视为索引元组来