当前位置: 首页 > 知识库问答 >
问题:

Python在离散数据上查找局部最大值和最小值[重复]

裴育
2023-03-14

假设这条线是由熊猫的离散随机html" target="_blank">数组成的。我怎样才能找到A、B、C、D点?

A是第一点和C之间的最高点

C是A和B之间的最低点

B是C和D之间的最高点

您可以使用这些数据来测试:[1, 2, 3, 10, 13, 15, 20, 50, 49, 49, 32, 33, 35, 36, 35, 34, 33, 34, 35, 36, 30, 27, 22, 15, 15, 17, 20, 27, 30, 32, 50, 56, 67, 85, 100, 99, 94, 83, 72, 59, 66, 67, 89, 90, 92, 127, 130, 189]

以上数据:

A=50

B=100

C=15

D=59

共有1个答案

韦绍晖
2023-03-14

如果你确定这条线是连续的(它不一定是平滑的),你可以通过使用有限差分来使用离散梯度搜索。

如果你从A的左边开始,你可以计算(y[i 1]-y[i])(我省略了除以h,因为它与这个目的无关。)看看是不是阳性。如果是,向前移动并再次计算。事实上,写下来会更容易。

def find_a():
    i=toTheLeftOfA
    done=false
    while not done:
        if y[i-1]-y[i]>0:
            i=i+1
        else:
            done=true
    return([i,y[i]])
## retrieve [X,Y(X)=A] as find_a()

我相信还有更聪明的方法,比如二进制搜索。但只要你每小时只需要做一次,而不是一百万次,这就行了。

 类似资料:
  • 我有一个熊猫数据框,有两列,一列是温度,另一列是时间。 我想做第三和第四列,叫做最小和最大。这些列中的每一个都将填充nan's,除非有一个局部min或max,那么它将具有该极值的值。 这里是一个数据的样本,本质上我试图识别图中所有的峰值和低点。 有没有内置的熊猫工具可以做到这一点?

  • 问题内容: 你能否建议使用中的模块函数在一维numpy数组中找到局部最大值/最小值?显然,最简单的方法是看一下最近的邻居,但我希望有一个被接受的解决方案,它是发行版的一部分。 问题答案: 如果你要查找一维数组中所有小于其邻居的条目,则可以尝试 你还可以在使用此步骤之前使数组平滑。 我认为没有专用的功能。

  • 主要内容:普通算法,分治算法程序中,我们经常使用数组(列表)存储给定的线性序列(例如 {1,2,3,4}),那么如何查找数组(序列)中的最大值或者最小值呢? 查找数组(序列)中最大值或最小值的算法有很多,接下来我们以 {3,7,2,1} 序列为例讲解两种查找最值的算法,一种是普通算法,另一种是借助 分治算法解决。 普通算法 普通算法的解决思路是:创建两个变量 max 和 min 分别记录数组中的最大值和最小值,它们的初始值都

  • 问题内容: 我很难找出例如如何从列表中查找分钟 如何通过定义()函数来查找此列表的最小值和最大值 我不想使用内置功能 问题答案: 如果要手动查找最小值作为函数: Python 3.4引入了该软件包,该软件包提供了其他统计信息:

  • 问题内容: 我正在寻找python中整数的最小值和最大值。例如,在Java中,我们有和。python中是否有类似的东西? 问题答案: Python 3 在Python 3中,此问题不适用。普通int类型是无界的。 但是,你实际上可能正在寻找有关当前解释器的字长的信息,在大多数情况下,该信息将与机器的字长相同。该信息在Python 3中仍以形式提供,这是一个有符号的单词可以表示的最大值。等效地,它是

  • 我试图找到矩阵中每列的最小值和最大值,但我当前的代码运行不正确。我试图把最小值放在一个新矩阵的第一行,最大值放在下一行,并对每一列这样做。任何帮助都将不胜感激,谢谢!