tsv の読み込み
最近考えた TSV (tab separated values) 形式で書かれたデータファイルを読んで辞書のリストに登録する.
import re tsvfile = "filename" f=open(tsv,"r") s=re.compile("[\t\s]") objects=map( lambda x: { "id" : int(x[0]), # ここら辺はそれぞれのデータフォーマットに応じて "ra": float(x[4]), "dec":float(x[5]), "sn": float(x[3])}, filter( lambda x: len(x) is not 0, # 空行を読飛ばす [ s.split(line) for line in f.readlines() ] ) ) f.close()
もっとエレガントに書ける方法はないかしら.あーコメントアウトくらい読飛ばした方が良いかな.
たとえば
filtered = filter(lambda object: object['sn']>3.7, objects) print filtered
で sn > 3.7 に合致するものを抜け出せる.
高速な numpy.where は数字の列しか扱えないと思うけど,これなら構造体的なデータも比較的速く扱える.と思う.いつかテストしてみるつもり.