gpt4 book ai didi

python - 在 datetime.date 对象的 numpy 数组中搜索日期的更快方法?

转载 作者:行者123 更新时间:2023-11-28 17:46:54 25 4
gpt4 key购买 nike

我有一个按时间顺序排列的大型 datetime.date 对象数组。这个数组中的许多日期都是相同的,但是有些日期丢失了……(这是一个“真实数据”的时间序列,所以很乱)。

我想计算每个日期有多少个数据点,目前我是这样做的:

import datetime as dt
import numpy as np

t = np.array([dt.date(2012,12,1) + dt.timedelta(n) for n in np.arange(0,31,0.25)])

Ndays = (t[-1] - t[0]).days

data_per_day = np.array([sum(t == t[0] + dt.timedelta(d)) for d in xrange(Ndays)])

但是我发现这很慢! (大约 400,000 个数据点需要 10 多分钟)是否有更快的方法?

最佳答案

使用 np.datetime64。在数据上 @Hans Then 我得到 241 毫秒。

In [1]: import numpy as np

In [2]: import datetime as dt

In [3]: t = np.array([dt.date(2012,12,1) + dt.timedelta(n)
for n in np.arange(0,31,0.00001)])

In [4]: t = t.astype(np.datetime64)

In [5]: daterange = np.arange(t[0], t[-1], dtype='datetime64[D]')

In [6]: np.bincount(daterange.searchsorted(t))
Out[6]:
array([100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000,
100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000,
100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000,
100000, 100000, 100000, 100000, 100000, 100000, 100000])

In [7]: %timeit np.bincount(daterange.searchsorted(t))
1 loops, best of 3: 241 ms per loop

关于python - 在 datetime.date 对象的 numpy 数组中搜索日期的更快方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16835729/

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