假设我有以下数组
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)
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)
| 归档时间: |
|
| 查看次数: |
153 次 |
| 最近记录: |