请问下,一个list是这样的
a_list=[220, 221, 221.6, 399, 300.3, 310, 219, 219.9, 400, 401]。
我想要类似于聚类的方式,将这一个列表,根据他们间的距离,分成三份,该如何做啊?
最后变成这一样子:
[[219, 219.9, 220, 221, 221.6], [300.3, 310], [399, 400, 401]]
就满意了。谢谢
请问下,一个list是这样的
a_list=[220, 221, 221.6, 399, 300.3, 310, 219, 219.9, 400, 401]。
我想要类似于聚类的方式,将这一个列表,根据他们间的距离,分成三份,该如何做啊?
最后变成这一样子:
[[219, 219.9, 220, 221, 221.6], [300.3, 310], [399, 400, 401]]
就满意了。谢谢
def cluster(data, maxgap):
data.sort()
groups = [[data[0]]]
for x in data[1:]:
if abs(x - groups[-1][-1]) <= maxgap:
groups[-1].append(x)
else:
groups.append([x])
return groups
if __name__ == '__main__':
data = [220, 221, 221.6, 399, 300.3, 310, 219, 219.9, 400, 401]
maxgap = 15
print(cluster(data, maxgap))