python - 具有 0 步或更多步的数据集的步检测
问题描述
我试图找出一种方法来检测我的数据集中的步骤而不设置阈值(至少避免设置任意阈值)。我有一个数据集,它是我希望我的代码可以处理的真实数据的一个示例,以及一个组成的数据集。
d = clockDiff
dary = np.array([*map(float, d)])
dary -= np.average(dary)
step = np.hstack((np.ones(len(dary)), -1*np.ones(len(dary))))
dary_step = np.convolve(dary, step, mode='valid')
step_indx = np.where(abs(np.diff(np.diff(dary_step))) > 0)[0]
plt.plot(dary)
plt.plot(dary_step/10)
for step in step_indx:
plt.plot((step, step), (dary_step[step]/10, 0), 'r')
取自:一维数据中的步长检测
但我似乎无法为不止一步的数据设置它
到目前为止,我已经尝试过:
scipy.signal.find_peaks(array) 但它只找到最高峰
来自原始代码的 np.argmax() 但具有多个峰值的相同问题
当前的方法是计算变化率并找到二阶导数不为零的位置,但实际数据图不是一条完美的直线,因此存在斜率差异,我试图避免设置任意阈值来解释这一点因为我希望程序能够处理广泛的数据集
解决方案
推荐阅读
- sql - 立即执行变量抛出错误 ORA-00936: 缺少表达式
- javascript - 如何使用 SS 2.0 将计划脚本中的用户名传递给 PDF 模板?
- python - Python Pandas 根据 If/Else 获取值
- php - 路由中的 $1 返回 404 错误,而不是将 url 段传递给控制器方法
- javascript - 为两个字符定义一个正则表达式,然后是两个数字
- angular - 如何在其他地方使用 subscribe() 的数据?
- android - 如何使用 Firebase 将毕加索图像添加到 ArrayList
- xslt - 创建 html 表时避免重复
- nativescript - 当应用程序在 android 平台的前台时,Firebase 推送通知不显示
- php - Symfony:在 FormType 表单中为 EntityType 使用不同的字段