【问题标题】:Subtracting two timestamp arrays减去两个时间戳数组
【发布时间】:2015-11-03 20:07:49
【问题描述】:

我创建了两个包含多个时间戳的 numpy 数组。时间戳采用月、日、年、小时、秒格式(例如 2009 年 12 月 8 日 10:00),我希望用它们来计算速度。我的速度函数几乎完成了,我只是不知道如何能够减去两个数组来找到它们之间的差异。我尝试使用 np.subtract..

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

    delta_time = np.subtract(time1,time2)

    print delta_time

    # set speed
    speed = (distance / delta_time) # speed in m/s
    speed = speed * 3.6 # speed in km/h

但我收到此错误...

NotImplemented

Traceback (most recent call last):
  File "C:/script.py", line 187, in <module>
    speed=speedofelephant(lat1, long1, time1, lat2, long2, time2)
  File "C:/script.py", line 182, in speedofelephant
    speed = (distance / delta_time) # speed in m/s
TypeError: unsupported operand type(s) for /: 'float' and 'NotImplementedType'

有什么建议吗?

【问题讨论】:

    标签: python arrays numpy


    【解决方案1】:

    如果它们是大多数日期时间格式,请使用delta = time1 - time2。

    使用dateutil.parser 解析为datetime.datetime 对象。

    编辑:减去日期时间会给你一个时间增量。您需要将其转换为秒,因此请使用 delta.totalseconds()。

    【讨论】:

    • 问题是当我使用 delta = time1 - time2 时,我得到了这个错误 Traceback (most recent call last): File "-------", line 187, in speed=speedofelephant(lat1, long1, time1, lat2, long2, time2) 文件“-----------”,第 177 行,在 speedofelephant delta_time = time1 - time2 类型错误:不支持的操作数类型(s ) for -: 'numpy.ndarray' 和 'numpy.ndarray'
    • 啊。这是因为您减去 numpy 数组。我对数据类型感到困惑。两者的长度相同吗?它们的形状是什么?我觉得应该是(n_rows_in_both, )
    • 对不起,我对python还是很陌生,请问它们的长度和形状如何?如果您的意思是这样的话,每个数组中都有相同数量的时间戳?
    • len(arr) 和 arr.shape
    • >>> len(time1) 1217 >>> len(time2) 1217 >>> time1.shape (1217,) >>> time2.shape (1217,)
    猜你喜欢
    • 2011-04-02
    • 2017-06-07
    • 1970-01-01
    • 1970-01-01
    • 2014-04-25
    • 1970-01-01
    • 2018-10-17
    • 1970-01-01
    • 2017-06-17
    相关资源
    最近更新 更多