gpt4 book ai didi

python - 从日期时间创建 numpy linspace

转载 作者:太空狗 更新时间:2023-10-29 17:25:03 25 4
gpt4 key购买 nike

我正在编写一个脚本,在 x 轴上绘制一些带有日期的数据(在 matplotlib 中)。我需要根据这些日期创建一个 numpy.linspace,以便之后创建样条曲线。有可能吗?

我尝试过的:

import datetime
import numpy as np

dates = [
datetime.datetime(2015, 7, 2, 0, 31, 41),
datetime.datetime(2015, 7, 2, 1, 35),
datetime.datetime(2015, 7, 2, 2, 37, 9),
datetime.datetime(2015, 7, 2, 3, 59, 16),
datetime.datetime(2015, 7, 2, 5, 2, 23)
]

x = np.linspace(min(dates), max(dates), 500)

它抛出这个错误:

TypeError: unsupported operand type(s) for *: 'datetime.datetime' and 'float'

我也尝试过将 datetime 转换为 np.datetime64,但效果不佳:

dates = [np.datetime64(i) for i in dates]
x = np.linspace(min(dates), max(dates), 500)

错误:

TypeError: ufunc multiply cannot use operands with types dtype('<M8[us]') and dtype('float64')

最佳答案

更新 - 2022

正如@Joooeey 和@Ehtesh Choudhury 所指出的,pandas 现在有 date_range ,这使得创建类似 numpy.linspace 的时间序列变得更加简单。

t = pd.date_range(start='2022-03-10',
end='2022-03-15',
periods=5)

如果将此时间序列作为 numpy 数组很重要,只需

>>> t.values

array(['2022-03-10T00:00:00.000000000', '2022-03-11T06:00:00.000000000',
'2022-03-12T12:00:00.000000000', '2022-03-13T18:00:00.000000000',
'2022-03-15T00:00:00.000000000'], dtype='datetime64[ns]')

原始答案

您是否考虑过使用 pandas?使用来自 this possible duplicate question 的方法, 你可以通过以下方式使用 np.linspace

import pandas as pd

start = pd.Timestamp('2015-07-01')
end = pd.Timestamp('2015-08-01')
t = np.linspace(start.value, end.value, 100)
t = pd.to_datetime(t)

获取线性时间序列的np.array

In [3]: np.asarray(t)
Out[3]:
array(['2015-06-30T17:00:00.000000000-0700',
'2015-07-01T00:30:54.545454592-0700',
'2015-07-01T08:01:49.090909184-0700',
...
'2015-07-31T01:58:10.909090816-0700',
'2015-07-31T09:29:05.454545408-0700',
'2015-07-31T17:00:00.000000000-0700'], dtype='datetime64[ns]')

关于python - 从日期时间创建 numpy linspace,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37964100/

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