在 Julia 中使用 findfirst() 的多个条件
Using multiple conditions with findfirst() in Julia
假设我有两个这样的数组:
- x = [10, 30, 50, 99, 299]
- y = [3, 29, 30, 23, 55]
如何找到满足以下两个条件的索引?
- x > 80 & y > 30
所以对于我的示例,我希望 return 是索引 5。
我想格式应该是这样的:
findfirst(x -> x > 80 \union y -> y> 30, x,y)
但这不起作用..
同样在我的例子中,x 和 y 是数据框中的列,但进行索引搜索也不起作用..
使用 zip:
julia> x = [10, 30, 50, 99, 299]
5-element Vector{Int64}:
10
30
50
99
299
julia> y = [3, 29, 30, 23, 55]
5-element Vector{Int64}:
3
29
30
23
55
julia> z = collect(zip(x, y))
5-element Vector{Tuple{Int64, Int64}}:
(10, 3)
(30, 29)
(50, 30)
(99, 23)
(299, 55)
julia> findfirst(xy -> first(xy) > 80 && last(xy) > 30, z)
5
广播似乎有效:
findfirst((x .> 80) .& (y .> 30))
假设我有两个这样的数组:
- x = [10, 30, 50, 99, 299]
- y = [3, 29, 30, 23, 55]
如何找到满足以下两个条件的索引?
- x > 80 & y > 30
所以对于我的示例,我希望 return 是索引 5。 我想格式应该是这样的:
findfirst(x -> x > 80 \union y -> y> 30, x,y)
但这不起作用..
同样在我的例子中,x 和 y 是数据框中的列,但进行索引搜索也不起作用..
使用 zip:
julia> x = [10, 30, 50, 99, 299]
5-element Vector{Int64}:
10
30
50
99
299
julia> y = [3, 29, 30, 23, 55]
5-element Vector{Int64}:
3
29
30
23
55
julia> z = collect(zip(x, y))
5-element Vector{Tuple{Int64, Int64}}:
(10, 3)
(30, 29)
(50, 30)
(99, 23)
(299, 55)
julia> findfirst(xy -> first(xy) > 80 && last(xy) > 30, z)
5
广播似乎有效:
findfirst((x .> 80) .& (y .> 30))