我有两个列表,其中有一个时间序列的时间和值。有一个包含布尔值的对应列表,用于标识时间序列中NAN值的位置。我需要做的是,如果一个真值(即NAN值)重复超过5次(一行中有6个NAN值),则将列表拆分为两个(在序列的开始和结束处,因此在两个结果列表中没有NAN值)。所以基本上,我需要把这个列表分成一个更小的列表,从一个包含6个以上重复NAN值的间隔开始和结束。我尝试了一些类似的方法:
for i in range(len(nan_list)-5):
if nan_list[i] == True and nan_list[i+1] == True and nan_list[i+2] == True and nan_list[i+3] == True and nan_list[i+4] == True and nan_list[i+5] == True:
我不确定从现在开始最好的办法是什么,我肯定还有更好的办法。你知道吗
然后,我需要做的是,对于重复次数少于5次的重复NAN值(一行中有6个NAN值),将这些值替换为使用scipy中的b样条计算的值。我不太清楚该怎么办。谢谢!你知道吗
如果我理解的正确,那么您希望基于另一个列表的索引(假设具有相同长度的列表)拆分一个列表,这样其他列表中的
n
重复元素就可以定义切片应该出现的位置。一个“优雅的”,但不是最有效的方法是只遍历其他列表的n
大小的片段,检查当前索引处是否有all(nan_list[i:i+n])
如果是,将索引之前的第一个列表中的所有内容作为片段放入结果中,然后跳过n
位置并重复该过程。不过,我更喜欢程序性方法:然后,您可以使用它根据
nan_len
列表中连续的True
值(或计算为True的任何值)拆分任何source
列表,例如:相关问题 更多 >
编程相关推荐