gpt4 book ai didi

Python:按元素将小时向量添加到日期向量

转载 作者:太空宇宙 更新时间:2023-11-04 03:09:52 25 4
gpt4 key购买 nike

我有一个日期数组:

>>> dates
array([datetime.datetime(2013, 1, 1, 0, 0),
datetime.datetime(2013, 1, 2, 0, 0),
datetime.datetime(2013, 2, 1, 0, 0))], dtype=object)

我有相应的小时数组,其大小与日期相同:

numpy.asarray([3,5,2])

我想生成以下内容:

>>> datesPlusHour
array([datetime.datetime(2013, 1, 1, 3, 0),
datetime.datetime(2013, 1, 2, 5, 0),
datetime.datetime(2013, 2, 1, 2, 0))], dtype=object)

即明智地将小时向量添加到日期向量元素。我希望使用比 for 循环更好的东西。

最佳答案

所有你需要的是从你的时间创建 timedeltas 作为一个 numpy 数组 tehm 添加你的日期:

>>> import datetime
>>> import numpy as np
>>> dates = np.array([datetime.datetime(2013, 1, 1, 0, 0),
... datetime.datetime(2013, 1, 2, 0, 0),
... datetime.datetime(2013, 2, 1, 0, 0)], dtype=object)
>>>
>>> h = np.asarray([3,5,2])
>>> hours = np.array([datetime.timedelta(hours=i) for i in h])
>>>
>>> dates + hours
array([datetime.datetime(2013, 1, 1, 3, 0),
datetime.datetime(2013, 1, 2, 5, 0),
datetime.datetime(2013, 2, 1, 2, 0)], dtype=object)

或者作为一种更 NumPythonic 的方法,您可以使用 np.vectorize 将函数应用于数组的项目,而不是使用列表理解。

>>> f = np.vectorize(lambda x: datetime.timedelta(hours=x))
>>> f(h) + dates
array([datetime.datetime(2013, 1, 1, 3, 0),
datetime.datetime(2013, 1, 2, 5, 0),
datetime.datetime(2013, 2, 1, 2, 0)], dtype=object)

关于Python:按元素将小时向量添加到日期向量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38403141/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com