我正在python中处理GPS跟踪数据,并尝试通过在GPS点的收集之间经过的时间量的中断来分割GPS跟踪文件。我已经将所有的时间值转换成整数,现在我正在处理一个整数列表。整数不是连续的,并且可以被1、2、3、4或5秒分开,并且仍然被认为是同一GPS轨迹的可行数据。但是,有些文件中的数据块相隔数百秒—在本例中,我想将整数列表拆分为两个单独的文件(最终表示两个单独的trip)。你知道吗
我一直在使用以下代码进行基本测试:
import numpy as np
a = [0, 47, 48, 49, 50, 97, 98, 99]
def consecutive(data, stepsize=1):
return np.split(data, np.where(np.diff(data) != stepsize)[0]+1)
b = np.array(a)
print consecutive(b)
>>>
[array([0]), array([47, 48, 49, 50]), array([97, 98, 99])]
如果实际数据中的步长始终为1,则这将起作用-但事实并非如此。我尝试在列表中插入适当的最大步长,但得到以下结果:
import numpy as np
a = [0, 47, 49, 51, 54, 97, 99, 101, 104, 107, 108, 356, 357, 358]
def consecutive(data, stepsize=5):
return np.split(data, np.where(np.diff(data) != stepsize)[0]+1)
b = np.array(a)
print consecutive(b)
>>>
[array([0]), array([47]), array([49]), array([51]), array([54]), array([97]), array([99]), array([101]), array([104]), array([107]), array([108]), array([356]), array([357]), array([358])]
每个数字都是一个单独的列表,因为没有一个步长等于5。你知道吗
我尝试按以下方式编辑此工作脚本以考虑可变步长,但由于语法无效而出现错误:
import numpy as np
a = [0, 47, 49, 51, 54, 97, 99, 101, 104, 107, 108, 356, 357, 358]
def consecutive(data, stepsize<5):
return np.split(data, np.where(np.diff(data) != stepsize)[0]+1)
b = np.array(a)
print consecutive(b)
错误说明<;是无效的步长运算符。有人知道这是怎么回事吗?本质上,如果整数之间的步长小于5,我希望整数在同一个列表中。如果步长大于5,我希望它作为一个新列表返回。你知道吗
我可能遗漏了一些基本的东西,但很感谢您在我目前定义/使用的功能之外提出的任何建议或其他解决方法。你知道吗
我还想感谢在这个链接上为另一个问题提供答案的人:how to find the groups of consecutive elements from an array in numpy?,因为这有助于我开始学习。你知道吗
收益率
所以只需将函数改为:
更新以纳入更大的样本量
得出以下答案:
这就是你要找的吗?你知道吗
相关问题 更多 >
编程相关推荐