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

aja*_*eep 3 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]
Run Code Online (Sandbox Code Playgroud)

在 Julia 中查找给定数组 A 中是否存在一对行元素的一个 liner 是什么。例如,一个 liner 必须为 [1 4] 返回 false,因为 [1 4] 行在 A 中不存在,并为 [ 返回 true 3 4]。我尝试了以下方式

[3 4] .== A
Run Code Online (Sandbox Code Playgroud)

返回

0  1

1  0

1  0

1  1

1  0
Run Code Online (Sandbox Code Playgroud)

而我希望我的输出仅为“真实”

1 1
Run Code Online (Sandbox Code Playgroud)

ffe*_*tte 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
Run Code Online (Sandbox Code Playgroud)




另一个更符合您最初尝试的解决方案是:

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
Run Code Online (Sandbox Code Playgroud)