Matplotlib 如何将Datetime转化为Numpy Array
阅读更多:Matplotlib 教程
什么是Datetime和Numpy Array
在Python编程中,Datetime和Numpy Array是两个非常重要的概念。
Datetime表示时间和日期,是一个Python标准库中的模块,通过该模块,我们可以进行与时间和日期有关的各种计算。比如:
from datetime import datetime
# 获取当前时间
now = datetime.now()
# 格式化时间
print(now.strftime("%Y-%m-%d %H:%M:%S"))
# 时间比较
t1 = datetime(2020, 1, 1)
t2 = datetime(2021, 1, 1)
delta = t2 - t1
print(delta.days)
Numpy Array则是一个非常强大,被广泛使用的Python库,它提供了一些高效的多维数组操作,可以快速进行矩阵运算、向量运算等。比如:
import numpy as np
# -*- coding: utf-8 -*-
"""
Created on Sat Dec 5 16:06:51 2020
"""
L = [1, 2, 3, 4, 5]
a = np.array(L) # 通过list构建numpy数组
print(a)
# 更多numpy数组操作
b = np.linspace(0, 1, 6) # 生成区间[0, 1]上等间隔分布的6个数
print(b)
c = np.random.normal(0, 1, (3, 3)) # 生成3*3的平均值为0,标准差为1的正态分布的随机数
print(c)
如何将Datetime转化为Numpy Array
在进行数据分析时,我们往往需要将Datetime类型的时间序列转化为Numpy Array类型。下面是几种将Datetime转化为Numpy Array的方法:
方法一:使用Numpy中的datetime64
类型
import numpy as np
import pandas as pd
# 创建Datetime类型序列数据
dates = pd.date_range('20210101', periods=3)
# 转换为Numpy Array类型
arr = np.array(dates, dtype='datetime64')
print(arr)
输出结果如下:
['2021-01-01T00:00:00.000000000' '2021-01-02T00:00:00.000000000'
'2021-01-03T00:00:00.000000000']
方法二:使用Pandas库中的to_numpy()
方法
import numpy as np
import pandas as pd
# 创建Datetime类型序列数据
dates = pd.date_range('20210101', periods=3)
# 转换为Numpy Array类型
arr = dates.to_numpy()
print(arr)
输出结果同上。
方法三:使用np.datetime64()
函数
import numpy as np
# 创建Datetime类型序列数据
dates = ['2020-01-01', '2020-01-02', '2020-01-03']
# 转换为Numpy Array类型
arr = np.array(dates, dtype='datetime64')
print(arr)
输出结果如下:
['2020-01-01T00:00:00.000000000' '2020-01-02T00:00:00.000000000'
'2020-01-03T00:00:00.000000000']
如何将Datetime转化为等间隔的Numpy Array
在某些情况下,我们需要将Datetime类型的时间序列转化为等间隔的Numpy Array,在这种情况下,我们可以使用Numpy中的linspace
函数。
import numpy as np
from datetime import datetime, timedelta
# 创建起始时间
start = datetime(2020, 1, 1)
# 生成Datetime类型的时间序列
dates = [start + timedelta(days=i) for i in range(10)]
# 转换为等间隔的Numpy Array类型
arr = np.linspace(start.value, (start + timedelta(days=9)).value, 10)
arr =arr.astype('datetime64[ns]')
print(arr)
在上述代码中,我们首先使用datetime
模块创建起始时间,然后使用列表生成式生成Datetime类型的时间序列,最后使用linspace
函数将时间序列转化为等间隔的Numpy Array类型。需要注意的是,由于linspace
函数返回的是一个数值序列,因此我们需要使用astype
方法将其转化为datetime64
类型。
输出结果如下:
['2020-01-01T00:00:00.000000000' '2020-01-02T00:00:00.000000000'
'2020-01-03T00:00:00.000000000' '2020-01-04T00:00:00.000000000'
'2020-01-05T00:00:00.000000000' '2020-01-06T00:00:00.000000000'
'2020-01-07T00:00:00.000000000' '2020-01-08T00:00:00.000000000'
'2020-01-09T00:00:00.000000000' '2020-01-10T00:00:00.000000000']
总结
本篇文章介绍了如何将Datetime类型的时间序列转化为Numpy Array类型,以及如何将时间序列转化为等间隔的Numpy Array类型。这些技巧在数据分析、可视化和模型建立等各个方面都是非常有用的。