python - 平均日期数组计算

标签 python arrays datetime numpy pandas

我想得到以下日期的平均值。我考虑过将所有数据转换为秒,然后对它们进行平均。但可能有更好的方法。

date = ['2016-02-23 09:36:26', '2016-02-24 10:00:32', '2016-02-24 11:28:22', '2016-02-24 11:27:20', '2016-02-24 11:24:15', '2016-02-24 11:20:25', '2016-02-24 11:17:43', '2016-02-24 11:12:03', '2016-02-24 11:09:11', '2016-02-24 11:08:44', '2016-02-24 11:05:28', '2016-02-24 11:03:23', '2016-02-24 10:58:08', '2016-02-24 10:53:59', '2016-02-24 10:49:34', '2016-02-24 10:43:33', '2016-02-24 10:35:27', '2016-02-24 10:31:50', '2016-02-24 10:31:17', '2016-02-24 10:30:05', '2016-02-24 10:29:21']

讨厌的解决方案:

import datetime
import time
import numpy as np

date = ['2016-02-23 09:36:26', '2016-02-24 10:00:32', '2016-02-24 11:28:22', '2016-02-24 11:27:20', '2016-02-24 11:24:15', '2016-02-24 11:20:25', '2016-02-24 11:17:43', '2016-02-24 11:12:03', '2016-02-24 11:09:11', '2016-02-24 11:08:44', '2016-02-24 11:05:28', '2016-02-24 11:03:23', '2016-02-24 10:58:08', '2016-02-24 10:53:59', '2016-02-24 10:49:34', '2016-02-24 10:43:33', '2016-02-24 10:35:27', '2016-02-24 10:31:50', '2016-02-24 10:31:17', '2016-02-24 10:30:05', '2016-02-24 10:29:21']
sec = [time.mktime(datetime.datetime.strptime(d, "%Y-%m-%d %H:%M:%S").timetuple()) for d in date]
mean = datetime.datetime.fromtimestamp(np.mean(sec))
print(mean)

最佳答案

在 NumPy 中,所有 datetime64[s] 都在内部由 8 字节整数表示。 整数表示自纪元以来的秒数。

因此您可以将 date 列表转换为 datetime64[s] dtype 的 NumPy 数组, 将其视为 dtype i8(8 字节整数),取平均值,然后将 int 转换回 datetime64[s]


import numpy as np

date = ['2016-02-23 09:36:26', '2016-02-24 10:00:32', '2016-02-24 11:28:22', '2016-02-24 11:27:20', '2016-02-24 11:24:15', '2016-02-24 11:20:25', '2016-02-24 11:17:43', '2016-02-24 11:12:03', '2016-02-24 11:09:11', '2016-02-24 11:08:44', '2016-02-24 11:05:28', '2016-02-24 11:03:23', '2016-02-24 10:58:08', '2016-02-24 10:53:59', '2016-02-24 10:49:34', '2016-02-24 10:43:33', '2016-02-24 10:35:27', '2016-02-24 10:31:50', '2016-02-24 10:31:17', '2016-02-24 10:30:05', '2016-02-24 10:29:21']

mean = (np.array(date, dtype='datetime64[s]')
        .view('i8')
        .mean()
        .astype('datetime64[s]'))

print(mean)

打印

2016-02-24T09:43:40-0500

关于python - 平均日期数组计算,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35599607/

相关文章:

python - OpenCV 量化示例代码未运行

python - Pandas 的数量超过群体

python - 将函数映射到元组中的元素

php - 将法语格式的日期转换为mysql日期时间格式

python - 我可以使用 WordPress 来支持 PyPI 文档页面吗?

c - C 中的数组指针与常规指针

c - 二维数组在没有被操纵的情况下丢失值?

javascript - 添加相同的产品 ID 但不增加其数量

.net - .net 有 BigDateTime 类型吗?

python - 如何将表单(国家/城市)中的字符串时区转换为 datetime.tzinfo