Matplotlib 如何将Datetime转化为Numpy Array

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类型。这些技巧在数据分析、可视化和模型建立等各个方面都是非常有用的。

Camera课程

Python教程

Java教程

Web教程

数据库教程

图形图像教程

办公软件教程

Linux教程

计算机教程

大数据教程

开发工具教程