在 Julia 中,如何获取排序数组中超过某个值的第一个元素的索引?

nat*_*lng 4 arrays julia

这是我的代码(x是排序数组):

lookup_value = 310.0
x = [298.0, 303.0, 308.0, 313.0, 323.0]
if (issorted(x))
    idx = searchsorted(x, lookup_value)
end
Run Code Online (Sandbox Code Playgroud)

在这种特殊情况下, idx 的值为:

4:3
Run Code Online (Sandbox Code Playgroud)

在这里,我想提取“4”(超过查找值的第一个元素)或“3”(不超过查找值的最后一个元素)。但是,我无法通过将范围转换为数组来做到这一点,因为我从以下命令中得到的只是一个空数组:

julia> collect(idx)
0-element Array{Int64,1}
Run Code Online (Sandbox Code Playgroud)

请注意,310.0 的查找值只是一个示例;这个变量可以采用不同的值。

nat*_*lng 5

我刚刚意识到可以使用idx.startidx.stop访问范围的开始和结束。

julia> idx
4:3
julia> idx.start
4
julia> idx.stop
3
Run Code Online (Sandbox Code Playgroud)

超过查找值的第一个元素是x[idx.start]超过查找值的最后一个元素是x[idx.stop]

  • 或者,`first(idx)` 和 `last(idx)` 也可以工作。这些具有稍微更通用的轻微好处,尽管这在这里并不重要。 (3认同)