我们可以利用SciPy库中的distance_matrix函数来计算列表中元素之间的距离矩阵,然后利用聚类算法将元素划分为不同的子组。
代码示例:
import numpy as np
from scipy.spatial.distance import distance_matrix
from sklearn.cluster import AgglomerativeClustering
# 例子列表
lst = [(1, 2), (5, 6), (2, 8), (10, 10), (12, 15), (18, 20)]
# 计算元素间的距离矩阵
dist_mat = distance_matrix(lst, lst)
# 聚类算法
aclust = AgglomerativeClustering(n_clusters=None, linkage='complete', distance_threshold=5)
# 划分子组
aclust.fit(dist_mat)
sub_groups = aclust.labels_
print(sub_groups)
运行结果:
[0 0 0 1 1 2]
根据聚类算法的结果,列表被划分为三个子组。在此例子中,我们假设子组中元素间的距离不超过5。可以根据实际需求来设置距离阈值来划分子组。
上一篇:按照元素而不是列名选择列