按组对浮点数列表进行排序

2024-04-19 08:31:19 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个浮点数数组,这是无序的。我知道这些值总是落在几个点上,这是未知的。为了举例说明,这个列表

[10.01,5.001,4.89,5.1,9.9,10.1,5.05,4.99]

值聚集在5和10左右,所以我希望[5,10]作为答案。在

对于一些簇,我可能会找到10个+值的簇。如何有效地做到这一点?在


Tags: 答案列表数组无序浮点数
2条回答

选中python-cluster。使用此库,您可以执行以下操作:

from cluster import *

data = [10.01,5.001,4.89,5.1,9.9,10.1,5.05,4.99]
cl = HierarchicalClustering(data, lambda x,y: abs(x-y))
print [mean(cluster) for cluster in cl.getlevel(1.0)]

你会得到:

^{pr2}$

(这是一个非常愚蠢的例子,因为我真的不知道你想做什么,而且这是我第一次使用这个库)

您可以尝试以下方法:

首先对数组排序,然后使用diff()计算两个连续值之间的差。大于阈值的差值可以视为分割位置:

import numpy as np
x = [10.01,5.001,4.89,5.1,9.9,10.1,5.05,4.99]
x = np.sort(x)
th = 0.5
print [group.mean() for group in np.split(x, np.where(np.diff(x) > th)[0]+1)]

结果是:

^{pr2}$

相关问题 更多 >