在Julia中访问数组中的行元素对

时间:2020-01-14 09:47:32

标签: 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; 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

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