Python,Numpy - 尝试根据条件拆分数组

时间:2012-02-22 05:39:57

标签: python numpy scipy

我试图在数组内找到簇(即数组中的组,其中[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])

或类似的东西。

感谢任何帮助。

1 个答案:

答案 0 :(得分: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])]