美文网首页科研成长时
Python:使用 pyts 把一维时间序列转换成二维图片

Python:使用 pyts 把一维时间序列转换成二维图片

作者: 强劲九 | 来源:发表于2019-03-19 00:22 被阅读0次

在之前 CSDN 上的一篇博客 —— 将一维时间序列转化成二维图片中,我翻译了一篇文章,说的是将一个时间序列信号转换成二维图片:

然后在文章的最后发了一个 Github 代码,这个代码是原文作者的代码,有人反应代码不能跑起来。

这里我使用 Python 的一个第三方库 pyts,参考官方文档,改写了一下。测试了一下,可以在 Pyhon3.7 上成功运行。

1. 准备一维时间序列

我使用 MATLAB 生成了一个 sin x 的时间序列图,plot 出来是这样的:

sinx

总共有 512 个点,也就是最大能够生成 512*512 的图片。

要把生成的图片保存为 .csv 文件:

2. 转换成图片

接下来就是简单地转换成二维图片了,先贴代码吧,或者可以在我的 Github 上下载,里面有批量处理和保存 GAF 图片的代码:

import numpy as np
import matplotlib.pyplot as plt
from pyts.image import GASF, GADF

x = np.loadtxt(open("sinx.csv","rb"),delimiter=",",skiprows=0).T
# print(type(x),x.shape)

X = x[0:]
X = X.reshape(1, -1)
print(type(X),X.shape)
image_size = 28
gasf = GASF(image_size)
X_gasf = gasf.fit_transform(X)
print(X_gasf.shape)
print(X_gasf[0,4,2],X_gasf[0,2,4])
gadf = GADF(image_size)
X_gadf = gadf.fit_transform(X)
print(X_gadf[0,1,2],X_gadf[0,2,1])

# Show the results for the first time series
plt.figure(figsize=(16, 8))
plt.subplot(121)
plt.imshow(X_gasf[0], cmap='rainbow', origin='lower')
plt.title("GASF", fontsize=16)
plt.subplot(122)
plt.imshow(X_gadf[0], cmap='rainbow', origin='lower')
plt.title("GADF", fontsize=16)
plt.savefig('sinx.jpg')
plt.show()

运行,出来的效果是这样的:

GAF

文中的 .csv 文件和代码都放在我的 repository 中,如果对你有帮助,可以在 Github 中给我个 Star,这会是对我的一份鼓励与肯定!

相关文章

网友评论

    本文标题:Python:使用 pyts 把一维时间序列转换成二维图片

    本文链接:https://www.haomeiwen.com/subject/kcqwmqtx.html