我有以下数组:
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天。
有什么想法吗?
发布于 2016-02-13 01:40:27
我不是python程序员,但我认为像这样的东西会给你想要的东西。
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发布于 2016-02-13 02:05:37
我认为这是最具蟒蛇气息的方式...
假设索引是你的随机索引,分割一个简化的数组,诀窍就是拆分你的列表(用y_new ),然后在正态和反转列表中找到下一个实数。然后以天为单位对查找增量的索引求和。希望能有所帮助。
下面是一个简单的代码:
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))https://stackoverflow.com/questions/35368761
复制相似问题