Julia in()函数或in运算符的广播版本?
考虑一个数组,比如0到4。我想测试每个元素是否在一个列表中,并返回一个布尔数组。在中调用Julia in()函数或in运算符的广播版本?,julia,Julia,考虑一个数组,比如0到4。我想测试每个元素是否在一个列表中,并返回一个布尔数组。在中调用将返回一个布尔值,因为此左侧数组不是右侧数组的元素: > a = 0:4; > a in [1, 2] false Julia是否有广播版本的in()函数或in操作符,该操作符返回类似于对map的调用的数组和lambda函数 > map(x -> x in [1,2], a) 5-element Array{Bool,1}: false true true false
将返回一个布尔值,因为此左侧数组不是右侧数组的元素:
> a = 0:4;
> a in [1, 2]
false
Julia是否有广播版本的in()
函数或in
操作符,该操作符返回类似于对map
的调用的数组和lambda函数
> map(x -> x in [1,2], a)
5-element Array{Bool,1}:
false
true
true
false
false
您可以使用广播,但必须告诉Julia第二个参数不应重复,因此您应该:
julia> in.(a, [[1,2]])
5-element BitArray{1}:
false
true
true
false
false
或
两者都将在0.6.3和0.7下工作
类似地,∈
运算符(
选项卡中的\与
函数中的同义)允许使用中缀符号进行广播
julia> 0:4 .∈ [[1,2]]
5-element BitArray{1}:
false
true
true
false
false
我相信in.(a,Ref([1,2])
就足够了(并且是等价的)。@fredrikekre no,in.(a,Ref([1,2])
只返回一个true
,而不是两个。在Julia中,0.7Ref([1,2])
被弃用了,所以很快,我会说这个令人困惑的构造将被禁止。原因是Ref([1,2])
与Julia 0.6.3中的Ref([1,2],1)
相同,它只从[1,2]
获取1
。
julia> 0:4 .∈ [[1,2]]
5-element BitArray{1}:
false
true
true
false
false