Algorithm 根据连续平均值出现的时间长度查找局部最小值,而不落入错误的最小值 1.问题描述
我有下面的值列表[10,10,10,5,5,5,7,7,2,4,3,3,3,10],如下图所示。Algorithm 根据连续平均值出现的时间长度查找局部最小值,而不落入错误的最小值 1.问题描述,algorithm,time-series,Algorithm,Time Series,我有下面的值列表[10,10,10,5,5,5,7,7,2,4,3,3,3,10],如下图所示。 我要做的是根据元素的值和 它的持续时间。从前面的列表中,我们可以构造以下字典键:val:[10:4,5:4,7:2,2:1,4:1,3:3,10:1]。这意味着我们有4个成功的10秒,然后是4个连续的5秒、2个连续的7秒和3个连续的3秒 根据我所说的,当地的最小值是5。但我不希望本地最小值为3。我们没有选择2,因为它只发生过一次 你对我们如何解决那个问题有什么想法吗。有没有一种现有的方法可以用来解
我要做的是根据元素的值和 它的持续时间。从前面的列表中,我们可以构造以下字典键:val:[10:4,5:4,7:2,2:1,4:1,3:3,10:1]。这意味着我们有4个成功的10秒,然后是4个连续的5秒、2个连续的7秒和3个连续的3秒 根据我所说的,当地的最小值是5。但我不希望本地最小值为3。我们没有选择2,因为它只发生过一次 你对我们如何解决那个问题有什么想法吗。有没有一种现有的方法可以用来解决这个问题 当然,我们可以按值[10:4、5:4、7:2、3:3、10:1]对字典进行排序,并选择值不同于1的最低键。这是一个好的解决方案吗 2.选择标准 必须是本地min find_local_minprices 必须拥有最高的继任人数 最小连续时间必须大于1 我被卡住了!因为现在我有3个作为局部最小值,但它只重复了3次。我在测试我的想法是否正确,我试图找到一个反例,结果我的脚受伤了 3.源代码 以下代码使用字典提取最小值:
#!/usr/bin/env python
import csv
import sys
import os
from collections import defaultdict
def find_local_min(prices):
i = 1
minPrices = []
while i < len(prices):
if prices[i] < prices[i-1]:
minPrices.append(prices[i])
j = i + 1
while j < len(prices) and prices[j] == prices[j-1]:
minPrices.append(prices[j])
j += 1
i = j
else:
i += 1
return minPrices
if __name__ == "__main__":
l = [10, 10, 10, 10, 5, 5, 5, 5, 7, 7, 7, 2,4, 3, 3, 3, 10]
minPrices = find_local_min(l)
minPriceDict = defaultdict(int)
for future in minPrices :
minPriceDict[future] += 1
print minPriceDict
作为输出,if给出以下内容:defaultdict,{2:1,3:
3,5:4}基于此输出,算法将选择5作为最小值
因为它连续重复了5次。但那是错误的!信息技术
应该是3。我真的很想知道如何解决那个问题
基于元素的值及其持续时间-你的意思是什么?i、 为什么3是本地最小值而不是5?这是基于总数还是仅仅是连续发生的事件?对不起,对我来说,这些似乎是相互排斥的。我仍然不明白为什么3是正确答案,5不是。选择本地键的明确标准是什么。中间键应小于上一个键和下一个键。中间键中存储的值应至少为2。列出所有这些键并选择最小的键。@VidorVistrom列出了我建议的解决方案。你应该走这条路。根据元素的值及其持续时间-你的意思是什么?i、 为什么3是本地最小值而不是5?这是基于总数还是仅仅是连续发生的事件?对不起,对我来说,这些似乎是相互排斥的。我仍然不明白为什么3是正确答案,5不是。选择本地键的明确标准是什么。中间键应小于上一个键和下一个键。中间键中存储的值应至少为2。列出所有这些键并选择最小的键。@VidorVistrom列出了我建议的解决方案。你应该走这条路。