Julia:检查一个向量中的元素是否在另一个向量中。

3
我希望您能够检查一个向量中的元素是否包含在另一个向量中。在R语言中,有一个运算符为%in%
例如,该运算符将执行以下操作:
 [1,3,5,7,9,4] %in% [1,2,4,5,8,9,10,11] 
 # [true,false,true,false,true,true]

我可以轻松编写自己的代码,但我试图避免重复造轮子。

3个回答

6

也许不太好,但您可以这样做:

julia> [1,3,5,7,9,4] .∈ [[1,2,4,5,8,9,10,11]]
6-element BitArray{1}:
  true
 false
  true
 false
  true
  true

哇,这个用额外的括号来扩展第二个数组的广播技巧真不错! - undefined

1
有一些内置函数可以实现类似的功能。 indexin 函数可以给出在 b 中与 a 的元素相同的索引(如果没有相同的元素则返回 0,这类似于 R 中的 match 函数)。setdiff 函数可以给出在 a 中而不在 b 中的元素。你可能可以用这些函数来实现你想要的功能 - 在 Julia 中,构建临时的布尔型数组进行过滤通常不是很惯用的方法,因为它会额外创建一个不必要的分配。

1
你可以使用匿名函数:map(x -> x in [1,2,4,5,8,9,10,11] ,[1,3,5,7,9,4])
或者使用推导式:[x in [1,2,4,5,8,9,10,11] for x = [1,3,5,7,9,4]]


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接