【问题标题】:Using multiple conditions with findfirst() in Julia在 Julia 中使用 findfirst() 的多个条件
【发布时间】:2021-09-15 05:41:54
【问题描述】:

假设我有两个这样的数组:

  • x = [10, 30, 50, 99, 299]
  • y = [3, 29, 30, 23, 55]

如何找到同时满足以下两个条件的索引?

  • x > 80 & y > 30

因此,对于我的示例,我预计返回值为索引 5。 我想格式看起来像这样:

findfirst(x -> x > 80 \union y -> y> 30, x,y)

但这不起作用..

在我的情况下,x 和 y 也是数据框中的列,但是进行索引搜索也不起作用..

【问题讨论】:

    标签: julia findfirst


    【解决方案1】:

    广播似乎有效: findfirst((x .> 80) .& (y .> 30))

    【讨论】:

    • 甚至可以做到findfirst(@. (x > 80) & (y > 30))
    【解决方案2】:

    使用邮编:

    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
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-01-14
      • 1970-01-01
      • 1970-01-01
      • 2017-09-21
      • 2020-04-25
      相关资源
      最近更新 更多