我试图在阵列内找到簇(即阵列中的组,其中[n 1]和[n]之间的差小于某个值).我有一个numpy数组,是一系列时间戳.我可以使用numpy.diff()找到时间戳之间的区别,但是我很难在没有循环遍历数组的情况下尝试确定簇.举例说明:
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< 100 t [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])
或类似的东西.
任何帮助表示赞赏.
最佳答案
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])]