2012-02-22 48 views
3

我试图在数组内找到聚类(即[n + 1]和[n]之间的差小于某个值的数组内的聚类) 。我有一个numpy数组,它是一系列时间戳记。我可以使用numpy.diff()找到时间戳之间的区别,但是我很难确定没有循环访问数组的簇。为了举例说明这一点:Python,Numpy - 尝试根据条件拆分数组

t = t = np.array([ 147, 5729, 5794, 5806, 6798, 8756, 8772, 8776, 9976]) 
dt = np.diff(t) 
dt = array([5582, 65, 12, 992, 1958, 16, 4, 1200]) 

如果我的群集条件是DT <百吨[1],T [2],并且t [3]将是一个簇和T [5],T [6],并且t [7]将是另一个。我试图玩弄numpy.where(),但我有越来越调整权分离出集群的条件没有成功,即

cluster1 = np.array([5729, 5794, 5806]) 
cluster2 = np.array([8756, 8772, 8776]) 

或沿行的东西。

任何帮助表示赞赏。

回答

7
import numpy as np 

t = np.array([ 147, 5729, 5794, 5806, 6798, 8756, 8772, 8776, 9976]) 
dt = np.diff(t) 
pos = np.where(dt > 100)[0] + 1 
print np.split(t, pos) 

输出为:

[array([147]), 
array([5729, 5794, 5806]), 
array([6798]), 
array([8756, 8772, 8776]), 
array([9976])]