假设我有一个下面的数组
A = [1 2; 1 3; 1 5; 2 1; 2 3; 2 4; 3 1; 3 3; 3 4; 3 1; 4 2; 4 3; 4 5; 5 2; 5 3; 5 5]
Julia中的一个衬里是什么,以查找给定数组A中是否存在一对行元素。例如,一个衬里必须为[1 4]返回false,因为A中不存在[1 4]行,然后返回对于[3 4]为true。我按照以下方式尝试了
[3 4] .== A
返回
0 1
1 0
1 0
1 1
1 0
而我希望输出仅为
的“ true”1 1
答案 0 :(得分:5)
eachrow
允许迭代矩阵的行,您可以将其简单地与in
结合使用,后者可以检查元素是否在集合中:
julia> A = [1 2; 1 3; 1 5; 2 1; 2 3; 2 4; 3 1; 3 3; 3 4; 3 1; 4 2; 4 3; 4 5; 5 2; ];
julia> [1, 4] in eachrow(A)
false
julia> [3, 4] in eachrow(A)
true
另一种更符合您最初尝试的解决方案是:
julia> Ref([3, 4]) .== eachrow(A)
16-element BitArray{1}:
0
0
0
0
0
0
0
0
1
0
0
0
0
0
0
0
julia> any(Ref([3,4]) .== eachrow(A))
true