使用&布尔匹配操作者

时间:2018-04-16 02:19:48

标签: julia

好的,让我们在这里采用这个逻辑:

dummy = [1 2 3 4 5]
num_test = convert(Array{Int64},3 .== dummy)

我得到了结果:

0  0  1  0  0

如果我尝试匹配两个陈述:

num_test = convert(Array{Int64},3 .== dummy & 4 .== dummy)

它没有评估:

0  0  0  0  0

正如我写的那样,这是因为在.==向量调用中它在相同的索引元素位置上寻找3 & 4吗?

我可以在R中进行类似的操作。但是相同类型的逻辑没有转移到Julia,或者我使用的是不正确的语法Julia?

由于

1 个答案:

答案 0 :(得分:3)

我假设您尝试执行的操作是评估3 .== dummy4 .== dummy,然后比较两个元素。鉴于此,这里有两个问题:

1)操作顺序。您需要(3 .== dummy) & (4 .== dummy)

2)如果您使用的是最近的v0.6,则还应该看到弃用警告,因为从v0.7 +开始,您需要广播&运算符。因此,请使用(3 .== dummy) .& (4 .== dummy)

我理解这个问题,转换为Vector{Int}部分很好,应该按预期工作,尽管你可以写Int.((3 .== dummy) .& (4 .== dummy))

鉴于上述所有情况,您现在应该看到以下结果:

julia> Int.((3 .== dummy) .& (4 .== dummy))
1×5 Array{Int64,2}:
 0  0  0  0  0

julia> Int.((3 .== dummy) .| (4 .== dummy))
1×5 Array{Int64,2}:
 0  0  1  1  0

最后一点,我假设您故意将dummy定义为单行Matrix而不是Vector。如果您希望最终输出为Vector,则可以使用dummy = [1,2,3,4,5]