在Julia中,为什么以下按元素比较返回包含false
的向量julia> [(1,)] .== (1,)
1-element BitArray{1}:
返回false
而以下返回true?
julia> [(1,)][1] == (1,)
返回true
使用egal
运算符(=== and .===)
时也是如此。
我在Julia 0.6.1和Julia 0.6.2(juliabox)上看到了这个;两者都在Linux 64位上。 我错过了什么?
感谢您的帮助!
答案 0 :(得分:3)
原因是.==
遍历右侧的向量和左侧大小的元组,所以基本上它等同于包装测试
julia> (1,) == 1
false
在一个元素BitArray
中。
要理解这一点,请考虑以下代码示例:
julia> [(1,2),] .== (1,2)
2-element BitArray{1}:
false
false
julia> [(1,2),(1,2),(1,2)] .== (1,2)
ERROR: DimensionMismatch("arrays could not be broadcast to a common size")
Stacktrace:
[1] _bcs1(::Base.OneTo{Int64}, ::Base.OneTo{Int64}) at .\broadcast.jl:70
[2] _bcs at .\broadcast.jl:63 [inlined]
[3] broadcast_shape at .\broadcast.jl:57 [inlined] (repeats 2 times)
[4] broadcast_indices at .\broadcast.jl:53 [inlined]
[5] broadcast_c at .\broadcast.jl:313 [inlined]
[6] broadcast(::Function, ::Array{Tuple{Int64,Int64},1}, ::Tuple{Int64,Int64}) at .\broadcast.jl:455
julia> [(1,)] .== ((1,),)
1-element BitArray{1}:
true
在第一种情况下,(1,2)
与1
和2
进行比较。在第二个容器尺寸不匹配(2比3)。在第三个中,一切都匹配。