2012-02-22 6 views
3

配列内のクラスター(つまり、[n + 1]と[n]の違いがある配列内のグループ)を配列内で見つけようとしています。私はタイムスタンプのシーケンスである配列がありません。 numpy.diff()を使用してタイムスタンプの違いを見つけることはできますが、配列をループせずにクラスターを決定するのは苦労します。この例示する:私のクラスタ条件が< 100トンdtがある場合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]) 

する[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])] 
関連する問題