2012年6月14日木曜日

Python: Separate a list into subsequences using diff

リストを、隣り合う数の差がしきい値より大きい複数のリストに分割したい。


x = [1, 2, 3, 100, 101, 102, 103, 200, 201, 202, 203]
y = [[1, 2, 3], [100, 101, 102, 103], [200, 201, 202, 203]]
に変換したい。


import numpy
thresh = 60
x = [1, 2, 3, 100, 101, 102, 103, 104, 200, 201, 202, 203]
y = [numpy.array(x)[i+1:j+1].tolist()
     for i, j 
     in zip(numpy.concatenate([
                [-1,], 
                numpy.where(numpy.diff(x) > thresh)[0]
              ]), 
            numpy.concatenate([
                numpy.where(numpy.diff(x) > thresh)[0], 
                [len(x),]
              ])
            )
     ]

2012年6月4日月曜日

複数行を1行にまとめるコマンド

paste を使えば、複数行をまとめられる。

# ls
dira
dirb
filea

の場合、
# ls | paste -s
dira dirb filea
と出力される。