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

简介: 在之前的一篇博客 —— 将一维时间序列转化成二维图片中,我翻译了一篇文章,说的是将一个时间序列信号转换成二维图片。这里我使用 Python 的一个第三方库 pyts,参考官方文档,改写了一下将一个时间序列信号转换成二维图片的代码。

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

img

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

这里我使用 Python 的一个第三方库 pyts,参考官方文档,改写了一下。测试了一下,可以在 Pyhon3.7 上成功运行。官方上说明的是 Python 版本应该不小于 3.5,代码已经上传至 GitHub.

1/ 安装 pyts 库

打开命令行,使用 pip 命令安装:pip install pyts

2/ 准备一维时间序列

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

在这里插入图片描述

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

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

在这里插入图片描述

3/ 转换成图片

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

使用新版本的 pyts,版本如下,这也是目前 GitHub 里面版本的代码:

# Author: strongnine (WeChat: strongnine)
import numpy as np
import matplotlib.pyplot as plt
from matplotlib import image
from pyts.image import GramianAngularField

sin_data = np.loadtxt('./data/sinx.csv', delimiter=",", skiprows=0).reshape(1, -1)  # 加载数据 (load the source data)
image_size = 28  # 生成的 GAF 图片的大小 (the size of each GAF image)

# `method` 的可选参数有:`summation` and `difference`
# The optional parameters of argument `method`: `summation` and `difference`
gasf = GramianAngularField(image_size=image_size, method='summation')
sin_gasf = gasf.fit_transform(sin_data)

gadf = GramianAngularField(image_size=image_size, method='difference')
sin_gadf = gadf.fit_transform(sin_data)
imges = [sin_gasf[0], sin_gadf[0]]
titles = ['Summation', 'Difference']

# 两种方法的可视化差异对比
# Comparison of two different methods
fig, axs = plt.subplots(1, 2, constrained_layout=True)
for img, title, ax in zip(imges, titles, axs):
    ax.imshow(img)
    ax.set_title(title)
fig.suptitle('GramianAngularField', y=0.94, fontsize=16)
plt.margins(0, 0)
plt.savefig("./GramianAngularField.pdf", pad_inches=0)
plt.show()

image.imsave("./images/GAF_of_Sin.png", sin_gasf[0])  # 保存图片 (save image)
np.savetxt("./images/GAF_of_Sin.csv", sin_gasf[0], delimiter=',')  # 保存数据为 csv 文件

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

在这里插入图片描述

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

目录
相关文章
|
11月前
|
机器学习/深度学习 编解码 Python
Python图片上采样工具 - RealESRGANer
Real-ESRGAN基于深度学习实现图像超分辨率放大,有效改善传统PIL缩放的模糊问题。支持多种模型版本,推荐使用魔搭社区提供的预训练模型,适用于将小图高质量放大至大图,放大倍率越低效果越佳。
835 3
|
11月前
|
机器学习/深度学习 文字识别 Java
Python实现PDF图片OCR识别:从原理到实战的全流程解析
本文详解2025年Python实现扫描PDF文本提取的四大OCR方案(Tesseract、EasyOCR、PaddleOCR、OCRmyPDF),涵盖环境配置、图像预处理、核心识别与性能优化,结合财务票据、古籍数字化等实战场景,助力高效构建自动化文档处理系统。
2716 0
|
数据采集 存储 监控
Python爬虫实战:批量下载亚马逊商品图片
Python爬虫实战:批量下载亚马逊商品图片
|
存储 机器学习/深度学习 人工智能
多模态RAG实战指南:完整Python代码实现AI同时理解图片、表格和文本
本文探讨了多模态RAG系统的最优实现方案,通过模态特定处理与后期融合技术,在性能、准确性和复杂度间达成平衡。系统包含文档分割、内容提取、HTML转换、语义分块及向量化存储五大模块,有效保留结构和关系信息。相比传统方法,该方案显著提升了复杂查询的检索精度(+23%),并支持灵活升级。文章还介绍了查询处理机制与优势对比,为构建高效多模态RAG系统提供了实践指导。
2970 0
多模态RAG实战指南:完整Python代码实现AI同时理解图片、表格和文本
|
数据可视化 数据挖掘 数据安全/隐私保护
Python实现时间序列动量策略:波动率标准化让量化交易收益更平稳
时间序列动量策略(TSMOM)是一种基于资产价格趋势的量化交易方法,通过建立多头或空头头寸捕捉市场惯性。然而,传统TSMOM策略因风险敞口不稳定而面临收益波动问题。波动率调整技术通过动态调节头寸规模,维持恒定风险水平,优化了策略表现。本文系统分析了波动率调整TSMOM的原理、实施步骤及优势,强调其在现代量化投资中的重要地位,并探讨关键参数设定与实际应用考量,为投资者提供更平稳的风险管理体验。
830 4
Python实现时间序列动量策略:波动率标准化让量化交易收益更平稳
|
数据采集 Web App开发 JavaScript
基于Selenium的Python爬虫抓取动态App图片
基于Selenium的Python爬虫抓取动态App图片
1161 68
|
存储 数据采集 大数据
Python推导式进阶指南:优雅初始化序列的科学与艺术
本文系统讲解Python推导式的用法与技巧,涵盖列表、字典、集合推导式及生成器表达式。通过代码示例和性能对比,展示推导式在数据结构初始化中的优势:简洁高效、执行速度快30%-50%。文章分析基础语法、核心应用场景(如序列构造、键值对转换、去重运算)及嵌套使用,并探讨使用边界与最佳实践,强调可读性优先原则。最后指出,合理运用推导式能显著提升代码质量和处理效率,同时避免过度复杂化的陷阱。
442 0
|
运维 监控 算法
时间序列异常检测:MSET-SPRT组合方法的原理和Python代码实现
MSET-SPRT是一种结合多元状态估计技术(MSET)与序贯概率比检验(SPRT)的混合框架,专为高维度、强关联数据流的异常检测设计。MSET通过历史数据建模估计系统预期状态,SPRT基于统计推断判定偏差显著性,二者协同实现精准高效的异常识别。本文以Python为例,展示其在模拟数据中的应用,证明其在工业监控、设备健康管理及网络安全等领域的可靠性与有效性。
1441 13
时间序列异常检测:MSET-SPRT组合方法的原理和Python代码实现
|
存储 索引 Python
Python入门:6.深入解析Python中的序列
在 Python 中,**序列**是一种有序的数据结构,广泛应用于数据存储、操作和处理。序列的一个显著特点是支持通过**索引**访问数据。常见的序列类型包括字符串(`str`)、列表(`list`)和元组(`tuple`)。这些序列各有特点,既可以存储简单的字符,也可以存储复杂的对象。 为了帮助初学者掌握 Python 中的序列操作,本文将围绕**字符串**、**列表**和**元组**这三种序列类型,详细介绍其定义、常用方法和具体示例。
Python入门:6.深入解析Python中的序列
|
机器学习/深度学习 运维 数据可视化
Python时间序列分析:使用TSFresh进行自动化特征提取
TSFresh 是一个专门用于时间序列数据特征自动提取的框架,支持分类、回归和异常检测等机器学习任务。它通过自动化特征工程流程,处理数百个统计特征(如均值、方差、自相关性等),并通过假设检验筛选显著特征,提升分析效率。TSFresh 支持单变量和多变量时间序列数据,能够与 scikit-learn 等库无缝集成,适用于大规模时间序列数据的特征提取与模型训练。其工作流程包括数据格式转换、特征提取和选择,并提供可视化工具帮助理解特征分布及与目标变量的关系。
1528 16
Python时间序列分析:使用TSFresh进行自动化特征提取

推荐镜像

更多