给定一个具有如下内容的数据集:
[2, 3, 4, 5, 6, 7, 8, 9, 10, 15, 20, 25, 30, 35, 40, 45, 50, 55, 65, 75, 85, 86, 87, 88]
值总是在增加(实际上是时间),我想找出值之间的平均距离,实际上我是在试图确定数据何时从“每秒1”变为“每5秒1”(或任何其他值)。
我是用Python实现的,但是任何语言的解决方案都是最受欢迎的。
我在上面的示例输入中寻找的输出如下所示:
[(2, 1), (10, 5), (55, 10), (85, 1) ]
其中,“2”表示值之间的距离从“1”开始,而“10”表示距离从“5”移动到“5”的位置(必须 * 精确 * 在那里,如果移动在一步之后被检测到,则无所谓)。
我正在寻找值之间的平均距离何时发生变化。我意识到在算法的稳定性和对输入变化的敏感性之间会有某种权衡。
(Is Pandas或NumPy是否对此有用?)
5条答案
按热度按时间kiayqfof1#
你可以这样使用numpy或panda(“panda version”):
如果您只想查看每个时间点的第一次出现,还可以用途:
然而,对于Pandas,您通常会使用
DatetimeIndex
来使用内置的时间序列功能:在我看来,对于处理时间序列来说,Pandas是Python生态系统中最好的库,不知道你到底想做什么,但我会给予Pandas一个尝试。
yqlxgs2m2#
在Python中:
rggaifut3#
输出:
这是你想要的吗?
vbopmzt14#
这个发电机怎么样:
L
和differences
时间内保持它的效率。*tuwxkamq5#
我喜欢通过
islice
使用窗口函数,它非常有用,我发现自己经常重用它:结果: