首页 > 解决方案 > 找到数字序列顶部或底部的点

问题描述

我有这样的问题,我想写一段代码来解决这个问题。

  1. 像这样的序列:[1,2,3,2], [1,3,2], [1,3,2,1]-> 我想输出 3(最大值),因为序列增加到 3,然后再次减小
  2. [3,2,1,2], [3,1,2], [3,1,2,3]-> 我想输出 1(最小值)这样的序列,因为序列减少到 1,然后再次增加

关于如何自动执行此操作的任何想法?

标签: python-3.xalgorithm

解决方案


尝试获取局部最大值和/或局部最小值:

import numpy as np
from scipy.signal import argrelextrema

a = np.array([3,2,1,3])

res=a[np.hstack([argrelextrema(a, np.greater),argrelextrema(a, np.less)]).ravel()]

这将返回局部最大值和最小值。如果它更适合您的用例,您可以以某种方式单独标记它们。根据您的问题,我认为它可能只是一个极值。另外-根据您的数据,您可能会考虑分别使用np.less_equalornp.greater_equal代替np.lessor np.greater


推荐阅读