保存数组中每个时间戳之间的时间量

时间:2015-11-02 22:10:17

标签: python arrays numpy

我正在研究一个python脚本,以获得一个点到下一个点之间的速度。我已经创建了这个功能(见下文),并在我测试时工作,但现在我知道它有效并且想要使用它,我遇到了障碍。我似乎找不到计算每个点之间的时间的方法,并使用numpy将其保存为数组。我的文件有数百个不同的点。

def speed(lat1, long1, time1, lat2, long2, time2):
    distance = haversine_distance(lat1, long1, lat2, long2)  # meter
    delta_time = time2 - time1 # second
    speed = distance / delta_time # speed in m/s
    speed = speed * 3.6 # speed in km/h

    return speed

每个点的时间戳采用以下格式:

timestamp.roundHr
12/8/2009 7:00
12/8/2009 8:00
12/8/2009 9:00
12/8/2009 10:00

1 个答案:

答案 0 :(得分:2)

您有时间戳1和时间戳2。首先,使用each创建一个datetime对象,然后通过从另一个中减去一个来获得delta时间:

from datetime import datetime as dt

def speed(lat1, long1, time1, lat2, long2, time2):
    distance = haversine_distance(lat1, long1, lat2, long2)  # meter

    # here's the fun stuff
    time1 = dt.strptime(time1, "%m/%d/%Y %H:%M")
    time2 = dt.strptime(time2, "%m/%d/%Y %H:%M")
    delta_time = (time2 - time1).total_seconds() # second

    # continue with the rest of your code
    speed = (distance / delta_time) # speed in m/s
    speed = speed * 3.6 # speed in km/h

    return speed

如果您的时间戳列表包含n元素,并且您想要计算不同的n-1元素列表,那么新列表中的i元素是增量时间在旧列表中的ii+1元素之间,这应该有效:

def computeDeltaTimes(L):
    answer = []
    a, b = itertools.tee(L)
    next(B, None)
    fmt = "%m/%d/%Y %H:%M"
    for start, end in zip(a,b):  # or itertools.izip in python2
        answer.append((dt.strptime(end, fmt) - dt.strptime(start, fmt)).total_seconds())
    return answer