Python 存在较大差异的拆分数组

Python 存在较大差异的拆分数组,python,arrays,split,Python,Arrays,Split,我有一个数组,它给了我这样一个图: (此图绘制了我的阵列中的点,如您所见,有6个清晰区域,其中y中的总量不同于相邻区域。) 我想做的是把给我这个图的数组分成不同的子集。我试图实现的是计算此子阵列的长度一个简单的尝试,您可以根据具体情况进行调整: def split_list(list, difference, min_size=None): i = 0 accumulators = [[list[0]]] for i in range(1, len(list)):

我有一个数组,它给了我这样一个图:


(此图绘制了我的阵列中的点,如您所见,有6个清晰区域,其中y中的总量不同于相邻区域。)


我想做的是把给我这个图的数组分成不同的子集。我试图实现的是计算此子阵列的长度

一个简单的尝试,您可以根据具体情况进行调整:

def split_list(list, difference, min_size=None):
    i = 0
    accumulators = [[list[0]]]
    for i in range(1, len(list)):
        if abs(list[i-1] - list[i]) > difference:
            if min_size is not None and len(accumulators[-1]) < min_size:
                continue
            accumulators.append([list[i]])
        else:
            accumulators[-1].append(list[i])
        
    return accumulators

print(split_list(
    [1,2,3,4,5, 10000, 10001, 10002, 10003, 10005, 60, 64, 67, 100], 100, 4
))

# out: [[1, 2, 3, 4, 5], [10000, 10001, 10002, 10003, 10005], [60, 64, 67, 100]]
def拆分列表(列表、差异、最小大小=无):
i=0
累加器=[[列表[0]]]
对于范围(1,len(列表))中的i:
如果abs(列表[i-1]-列表[i])>差异:
如果最小值大小不是None且len(累加器[-1])<最小值大小:
持续
累加器。追加([列表[i]])
其他:
累加器[-1]。追加(列表[i])
回流蓄能器
打印(拆分)列表(
[1,2,3,4,5, 10000, 10001, 10002, 10003, 10005, 60, 64, 67, 100], 100, 4
))
#输出:[[1,2,3,4,5],[10000,10001,10002,10003,10005],[60,64,67100]]

在那之后,计算子阵列的大小是很简单的,或者你可以简单地使用一个计数器数组而不是累加器,从一开始就永远不会创建它们。非常感谢,我认为这将帮助我解决我遇到的问题。如果你能接受我的答案,我很乐意提供帮助(单击旁边的复选标记)这将有很大帮助。请共享一个小的数组示例,以便其他开发人员可以形成一个拆分该子数组的解决方案。欢迎使用堆栈溢出!请拿起,阅读,和,并提供一个。“为我实现此功能”是本网站的主题。你必须做出诚实的尝试,然后就你的算法或技术提出具体的问题。@yeshSurya当人们将堆栈溢出视为免费在线编码服务时,请不要鼓励这样做。