首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在Julia中,如何获得排序数组中超过某个值的第一个元素的索引?

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

Stack Overflow用户
提问于 2016-04-20 09:11:05
回答 2查看 769关注 0票数 5

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

代码语言:javascript
运行
复制
lookup_value = 310.0
x = [298.0, 303.0, 308.0, 313.0, 323.0]
if (issorted(x))
    idx = searchsorted(x, lookup_value)
end

在这种情况下,idx的价值是:

代码语言:javascript
运行
复制
4:3

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

代码语言:javascript
运行
复制
julia> collect(idx)
0-element Array{Int64,1}

注意,310.0的查找值只是一个例子;这个变量可以接受不同的值。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-04-20 09:25:16

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

代码语言:javascript
运行
复制
julia> idx
4:3
julia> idx.start
4
julia> idx.stop
3

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

票数 6
EN

Stack Overflow用户

发布于 2016-04-28 19:57:58

这是对公认答案的回应。我本来打算把它作为评论加进去的,但显然我不允许这样做:

您绝对不应该使用idx.startidx.stop。Julia中的类型字段名(通常)考虑的是实现细节,而不是接口的一部分。他们可以在没有警告或反对的情况下改变。

你应该按照王凤阳的建议使用first(idx)last(idx)

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/36738984

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档