gpt4 book ai didi

python - 使用 python 在移动区间上查找最大值(和最小值)

转载 作者:太空狗 更新时间:2023-10-30 02:19:04 25 4
gpt4 key购买 nike

我有一个类似的数组

[5.5, 6.0, 6.0, 6.5, 6.0, 5.5, 5.5, 5.0, 4.5]. 

这个数组的所有数字都相差0.5,并且两个连续数字的最大差也是0.5(它们可以相同;如示例中所示)。并且有一个移动区间或框,它覆盖了例如 3 个连续的数字,如下所示:

[(5.5, 6.0, 6.0), 6.5, 6.0, 5.5, 5.5, 5.0, 4.5]  # min: 5.5, max: 6.0

然后盒子一个一个向右移动:

[5.5, (6.0, 6.0, 6.5), 6.0, 5.5, 5.5, 5.0, 4.5]  # min: 6.0, max: 6.5

[5.5, 6.0, (6.0, 6.5, 6.0), 5.5, 5.5, 5.0, 4.5] # min: 6.0, max: 6.5

问题是,每次移动时,如何找到框内数字的最小值和最大值?

当盒子和数组的大小很小时,我可以处理它,就像这个例子一样,但我需要将它应用于像数组大小 100000 和盒子大小 10000 的情况。使用我的方法(我使用 for 循环计算每个最大值和最小值对于每个时间盒通过),它花费了太多时间(我还有 100 个数组要做并且需要重复运行)。有一些时间限制,所以我需要在 0.5 秒内像一次计算一样运行它。

最佳答案

看看 rolling windows来自 Pandas :

>>> import pandas as pd
>>> L = [5.5, 6.0, 6.0, 6.5, 6.0, 5.5, 5.5, 5.0, 4.5]
>>> a = pd.DataFrame(L)
>>> pd.rolling_max(a, 3)
0
0 NaN
1 NaN
2 6.0
3 6.5
4 6.5
5 6.5
6 6.0
7 5.5
8 5.5
>>> pd.rolling_min(a, 3)
0
0 NaN
1 NaN
2 5.5
3 6.0
4 6.0
5 5.5
6 5.5
7 5.0
8 4.5

关于python - 使用 python 在移动区间上查找最大值(和最小值),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32436689/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com