python 寻找数据拐点

import numpy as np
import cv2
from scipy.signal import find_peaks# 示例数据
y_data = [365.63258786, 318.34824281, 258.28434505, 228.8913738, 190.87220447, 158.28434505, 129.53035144, 111.95846645, 111.95846645, 120.26517572, 140.71246006, 161.79872204, 180.6485623,202.0543131, 241.03194888, 275.53674121, 313.87539936, 348.69968051, 391.19169329]
x_data = [186.26517572, 201.28115016, 220.76996805, 230.99361022, 242.81469649, 254.63578275, 263.90095847, 274.12460064, 274.12460064, 280.19488818, 284.02875399, 287.86261981, 291.05750799,295.84984026, 299.68370607, 303.8370607, 308.94888179, 313.10223642, 316.61661342]x_data = np.array(x_data)
y_data = np.array(y_data)# 使用 find_peaks 检测局部极大值(拐点)
peaks, _ = find_peaks(y_data, height=0)# 使用 find_peaks 检测局部极小值(拐点)
# 通过检测 -y 的局部极大值来找到 y 的局部极小值
valleys, _ = find_peaks(-y_data)# 创建空白图像
height, width = 600, 800
image = np.ones((height, width, 3), dtype=np.uint8) * 255# 定义坐标轴范围和比例
x_min, x_max = min(x_data), max(x_data)
y_min, y_max = min(y_data), max(y_data)
x_scale = (width - 40) / (x_max - x_min)  # 留出20像素的边距
y_scale = (height - 40) / (y_max - y_min)# 将数据点转换为图像坐标系
def to_image_coords(x, y):img_x = int((x - x_min) * x_scale + 20)img_y = height - int((y - y_min) * y_scale + 20)return img_x, img_y# 绘制原始数据点和线条
for i in range(len(x_data) - 1):x1, y1 = to_image_coords(x_data[i], y_data[i])x2, y2 = to_image_coords(x_data[i + 1], y_data[i + 1])cv2.line(image, (x1, y1), (x2, y2), (0, 0, 0), 2)  # 黑色线条cv2.circle(image, (x1, y1), 3, (0, 0, 0), -1)  # 黑色点# 绘制峰值点
for peak in peaks:x, y = to_image_coords(x_data[peak], y_data[peak])cv2.circle(image, (x, y), 5, (0, 0, 255), -1)  # 红色点# 绘制谷值点
for valley in valleys:x, y = to_image_coords(x_data[valley], y_data[valley])cv2.circle(image, (x, y), 5, (255, 0, 0), -1)  # 蓝色点# 绘制坐标轴
cv2.line(image, (20, height - 20), (width - 20, height - 20), (0, 0, 0), 2)  # x轴
cv2.line(image, (20, height - 20), (20, 20), (0, 0, 0), 2)  # y轴# 添加标签
font = cv2.FONT_HERSHEY_SIMPLEX
cv2.putText(image, 'X', (width - 30, height - 10), font, 0.5, (0, 0, 0), 1, cv2.LINE_AA)
cv2.putText(image, 'Y', (10, 30), font, 0.5, (0, 0, 0), 1, cv2.LINE_AA)
cv2.putText(image, 'Curve with Peaks and Valleys', (180, 40), font, 0.7, (0, 0, 0), 2, cv2.LINE_AA)# 显示图像
cv2.imshow('Curve with Peaks and Valleys', image)
cv2.waitKey(0)
cv2.destroyAllWindows()

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/1213.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【Leetcode 热题 100】84. 柱状图中最大的矩形

问题背景 给定 n n n 个非负整数,用来表示柱状图中各个柱子的高度。每个柱子彼此相邻,且宽度为 1 1 1。 求在该柱状图中,能够勾勒出来的矩形的最大面积。 示例 输入: h e i g h t s [ 2 , 1 , 5 , 6 , 2 , 3 ] heights [2,1…

网络原理(三)—— 传输层 之 UDP 和 TCP协议

传输层 在传输层两大关键的协议就是UDP和TCP协议了,除此之外,还有别的传输层协议,本文章将介绍UDP和TCP协议,重点介绍TCP协议。 首先回顾TCP和UDP 的特点: UDP:不可靠传输,面向数据包&#xf…

MySQL素材怎么导入Navicat???

不管用什么方法都要先关掉MySQL服务,并且提前备份数据! 1.有sql文件时候。 打开navicat,运行sql文件 然后点击后面三个点,选中要运行的sql文件,开始。 鼠标右键刷新一下,就能看到sql文件中的表了 2.没有s…

Windows安装ES单机版设置密码

下载ES ES下载链接 我用的是7.17.26 启动前配置 解压之后打开D:\software\elasticsearch-7.17.26\bin\elasticsearch-env.bat 在elasticsearch-env.bat文件中修改jdk的路径 修改前 修改内容 if defined ES_JAVA_HOME (set JAVA"D:\software\elasticsearch-7.17.26\…

mac intel芯片下载安卓模拟器

一、调研 目前主流两个模拟器: 雷神模拟器 不支持macosmumu模拟器pro版 不支持macos intel芯片 搜索到mumu的Q&A中有 “Intel芯片Mac如何安装MuMu?” q&a🔗:https://mumu.163.com/mac/faq/install-on-intel-mac.html 提…

系统看门狗配置--以ubuntu为例

linux系统配置看门狗 以 ubuntu 系统配置看门狗为例 配置看门狗使用的脚本文件,需要使用管理员权限来执行: 配置是:系统每 30S 喂一次狗,超过 60S 不进行投喂,就会自动重启。 1. 系统脚本内容: #!/bin/b…

每天五分钟深度学习框架pytorch:快速搭建VGG网络的基础模块VGG块

本文重点 前面我们介绍了VGG神经网络,我们知道VGG是由许多的VGG块构成,那么本文我们将使用pytorch搭建VGG块 代码实现: import torch from torch import nn def vgg_block(num_convs,in_channels,out_channels): net=[nn.Conv2d(in_channels,out_channels,kernel_size=3,p…

RocketMQ 知识速览

文章目录 一、消息队列对比二、RocketMQ 基础1. 消息模型2. 技术架构3. 消息类型4. 消费者类型5. 消费者分组和生产者分组 三、RocketMQ 高级1. 如何解决顺序消费和重复消费2. 如何实现分布式事务3. 如何解决消息堆积问题4. 如何保证高性能读写5. 刷盘机制 (topic 模…

2_CSS3 背景 --[CSS3 进阶之路]

CSS3 中的背景属性提供了许多强大的功能来增强网页设计,包括但不限于多背景图像、渐变、背景大小控制等。以下是一些关键的 CSS3 背景属性及其用法示例。 1. 多重背景图像 CSS3 允许你为一个元素设置多个背景图像。这些图像按照它们在 background-image 属性中定义…

Kutools for Excel 简体中文版 - 官方正版授权

Kutools for Excel 是一款超棒的 Excel 插件,就像给你的 Excel 加了个超能助手。它有 300 多种实用功能,现在还有 AI 帮忙,能把复杂的任务变简单,重复的事儿也能自动搞定,不管是新手还是老手都能用得顺手。有了它&…

腾讯云AI代码助手编程挑战赛-智能聊天助手

作品简介 本作品开发于腾讯云 AI 代码助手编程挑战赛,旨在体验腾讯云 AI 代码助手在项目开发中的助力。通过这一开发过程,体验到了 AI 辅助编程的高效性。 技术架构 前端: 使用 VUE3、TypeScript、TDesign 和 ElementUI 实现。 后端: 基于 Python 开发…

Spring Data Elasticsearch简介

一、Spring Data Elasticsearch简介 1 SpringData ElasticSearch简介 Elasticsearch是一个实时的分布式搜索和分析引擎。它底层封装了Lucene框架,可以提供分布式多用户的全文搜索服务。 Spring Data ElasticSearch是SpringData技术对ElasticSearch原生API封装之后的产物,它通…

STM32之LWIP网络通讯设计-下(十五)

STM32F407 系列文章 - ETH-LWIP(十五) 目录 前言 一、软件设计 二、CubeMX实现 1.配置前准备 2.CubeMX配置 1.ETH模块配置 2.时钟模块配置 3.中断模块配置 4.RCC及SYS配置 5.LWIP模块配置 3.生成代码 1.main文件 2.用户层源文件 3.用户层头…

AI浪潮下的IT变革之路:机遇、挑战与重塑未来

前言:哈喽,大家好,今天给大家分享一篇文章!并提供具体代码帮助大家深入理解,彻底掌握!创作不易,如果能帮助到大家或者给大家一些灵感和启发,欢迎收藏关注哦 💕 目录 AI浪…

Edge浏览器网页设置深色模式/暗模式

文章目录 需求分析1. 浏览器中的设置——外观——深色。2. 在Edge浏览器的地址栏如下网址:edge://flags/,直接搜索Dark则有内容弹出,将Default更改为Enable即可设置成功。3. 成果 需求 长期对着电脑屏幕,白色实在太刺眼&#xff…

Type-C双屏显示器方案

在数字化时代,高效的信息处理和视觉体验已成为我们日常生活和工作的关键需求。随着科技的进步,一款结合了便携性和高效视觉输出的设备——双屏便携屏,逐渐崭露头角,成为追求高效工作和娱乐体验人群的新宠。本文将深入探讨双屏便携…

Redis 优化秒杀(异步秒杀)

目录 为什么需要异步秒杀 异步优化的核心逻辑是什么? 阻塞队列的特点是什么? Lua脚本在这里的作用是什么? 异步调用创建订单的具体逻辑是什么? 为什么要用代理对象proxy调用createVoucherOrder方法? 对于代码的详细…

机器学习基础-机器学习的常用学习方法

目录 半监督学习的概念 规则学习的概念 基本概念 机器学习里的规则 逻辑规则 规则集 充分性与必要性 冲突消解 命题逻辑 → 命题规则 序贯覆盖 单条规则学习 剪枝优化 强化学习的概念 1. 强化学习对应了四元组 2. 强化学习的目标 强化学习常用马尔可夫决策过程…

国产3D CAD将逐步取代国外软件

在工业软件的关键领域,计算机辅助设计(CAD)软件对于制造业的重要性不言而喻。近年来,国产 CAD 的发展态势迅猛,展现出巨大的潜力与机遇,正逐步改变着 CAD 市场长期由国外软件主导的格局。 国产CAD发展现状 …

【机器学习】农业 4.0 背后的智慧引擎:机器学习助力精准农事决策

我的个人主页 我的领域:人工智能篇,希望能帮助到大家!!!👍点赞 收藏❤ 在当今数字化浪潮汹涌澎湃之际,农业领域正经历着一场前所未有的深刻变革,大踏步迈向农业 4.0时代。这一时代…