Python,Numpy-尝试根据条件拆分数组
我试图在数组中查找簇(即数组中[n+1]和[n]之间的差值小于某个值的组)。我有一个numpy数组,它是一个时间戳序列。我可以使用numpy.diff()找到时间戳之间的差异,但是我很难在不循环数组的情况下确定集群。举例来说:Python,Numpy-尝试根据条件拆分数组,python,numpy,scipy,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
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<100t[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])]