亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

在python中計算圖中的峰值數量

在python中計算圖中的峰值數量

Qyouu 2022-07-19 15:14:38
使用數據集df,我繪制了如下圖:dfTime    Temperature8:23:04     18.58:23:04     199:12:57     199:12:57     209:12:58     209:12:58     219:12:59     219:12:59     239:13:00     239:13:00     259:13:01     259:13:01     279:13:02     279:13:02     289:13:03     28圖表(整體)放大數據時,我們可以看到更多細節:我想計算這個溫度測量設備的激活次數,這會導致溫度急劇上升。我已經定義了一個激活如下:令 T0, T1, T2, T3 為時間 t=0,t=1,t=2,t=3 的溫度,d0= T1-T0, d1= T2-T1, d2= T3-T2, ...是 2 個相鄰值的差。如果1) d0 ≥ 0 且 d1 ≥ 0 且 d2 ≥ 0,并且2) T2-T0 > max(d0, d1, d2),并且3) T2-T0 < 30 秒它被認為是一種激活。我想計算總共有多少次激活。有什么好方法可以做到這一點?謝謝。
查看完整描述

1 回答

?
當年話下

TA貢獻1890條經驗 獲得超9個贊

取決于如何定義尖峰,可能會有許多不同的有效答案。


假設您只想要溫度顯著升高的指數。一種簡單的方法是只尋找超過某個閾值的非常大的值跳躍。閾值可以從數據的平均差中計算出來,這應該粗略估計值發生顯著變化的位置。這是一個基本的實現:


import numpy as np


# Data

x = np.array([0, 1, 2, 50, 51, 52, 53, 100, 99, 98, 97, 96, 10, 9, 8, 80])


# Data diff

xdiff = x[1:] - x[0:-1]


# Find mean change

xdiff_mean = np.abs(xdiff).mean()


# Identify all indices greater than the mean

spikes = xdiff > abs(xdiff_mean)+1

print(x[1:][spikes])  # prints 50, 100, 80

print(np.where(spikes)[0]+1)  # prints 3, 7, 15

您也可以使用異常值拒絕,這比與均值差的基本比較要聰明得多。


查看完整回答
反對 回復 2022-07-19
  • 1 回答
  • 0 關注
  • 102 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號