首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在数组中查找最接近的值

如何在数组中查找最接近的值
EN

Stack Overflow用户
提问于 2016-02-13 01:30:00
回答 2查看 200关注 0票数 1

我有以下数组:

代码语言:javascript
复制
y_new = [0.0057602140000000005, nan, nan, nan, nan, nan, 0.0057104540000000002, nan, 0.0056821390000000001, nan, nan, nan, nan, nan, nan, 0.0056911319999999998, nan, nan, nan, nan, nan, 0.0054902060000000001, nan, nan, nan, nan, nan, nan, 0.0053461740000000004, nan, nan, nan, nan, 0.0055180319999999991, nan, nan, nan, nan, nan, nan, nan, 0.0051784170000000003, nan, nan, nan, nan, nan, nan, 0.0051544399999999997, nan, nan, nan, nan, nan, nan, 0.005136781, nan, nan, 0.0051989519999999997, nan, nan, nan, nan, nan, nan, 0.0051330490000000006, 0.0052893050000000002, nan, nan, nan, nan, nan, nan, nan, 0.0053077380000000002, nan, nan, nan, nan, 0.0053766209999999998, 0.0053431900000000003, nan, nan, nan, nan, 0.0051352960000000001]

我想在该数组中选择一个随机点,并计算出最接近的实值在它的上方或下方的位置。非实值是"nan“,而实值是数字。然后我想要计算这两个点之间的间距差,其中y_new[5]y_new[6]之间的差只有1天。

有什么想法吗?

EN

回答 2

Stack Overflow用户

发布于 2016-02-13 01:40:27

我不是python程序员,但我认为像这样的东西会给你想要的东西。

代码语言:javascript
复制
randomIndex = 5;
sizeofArray = 200;
lessThan = 0;
greaterThan = 0;

for(int i = randomIndex; i >=0; i---)
{
value = y_new[i];
if(value != nan)
{
lessThan = i;
return;
} 

}

for(int i = randomIndex; i <sizeOfArray; i++)
{
value = y_new[i];
if(value != nan)
{
greaterThan = i;
return;
} 

}

less = randomIndex - lessThan;
great = greaterThan - randomIndex;

if(less < great) return less;
else return great
票数 0
EN

Stack Overflow用户

发布于 2016-02-13 02:05:37

我认为这是最具蟒蛇气息的方式...

假设索引是你的随机索引,分割一个简化的数组,诀窍就是拆分你的列表(用y_new ),然后在正态和反转列表中找到下一个实数。然后以天为单位对查找增量的索引求和。希望能有所帮助。

下面是一个简单的代码:

代码语言:javascript
复制
index=4
y_new = [0.1, 'nan', 'nan', 0.2, 'nan','nan', 0.3,'nan']

nextList=y_new[index:]
beforeList=y_new[:index]

before_idx=(i for i,v in enumerate(list(reversed(beforeList))) if v!='nan').next()    
next_idx=(i for i,v in enumerate(nextList) if v!='nan').next()    

print y_new
print before_idx
print next_idx

print "interval between 2 real number near index %d is: %d days" %(index,(next_idx+before_idx+1))
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/35368761

复制
相关文章

相似问题

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