2017-04-12 16 views
0

私はPythonで次のコードを持っています。私はそれを最適化するための助けが必要だと思います。
私は数百万行のデータを読み込んでいますが、1行に1つの座標が私の基準に合わない場合、それらの大部分を投げ捨てます。
コードは以下の通りである:それはC型コードだったとPythonで、もちろん今これが遅い狂気であるかのように私はそれをコード化しましたPythonクイックデータの読み込みとスライス

def loadFargoData(dataname, thlimit): 
    temp = np.loadtxt(dataname) 
    return temp[ np.abs(temp[:,1]) < thlimit ] 


私の一時オブジェクトをどうにかスローすることはできますか? Pythonの人口が私を助けてくれますか?

+0

この質問の重複があります:http://stackoverflow.com/questions/14645789/numpy-reading-file-with-filtering-lines-on-the-fly – Zefick

+0

@Zefick:リンクありがとうございます。確かにそれは私の問題を解決するだろう、もしそれが可能なのは、数学的演算を模倣する正規表現を構築することは可能ですか? – AtmosphericPrisonEscape

答えて

1

pandasに含まれているデータリーダーがスクリプトを高速化する可能性があります。それはnumpyよりも速く読み取ります。 Pandasはデータフレームオブジェクトを生成し、numpy配列(簡単に変換することも簡単です)で簡単に表示できるので、numpyで条件を実行することができます。

import pandas as pd 

def loadFargoData(dataname, thlimit): 
    temp = pd.read_csv(dataname) # returns a dataframe 
    temp = temp.values   # returns a numpy array 
    # the 2 lines above can be replaced by temp = pd.read_csv(dataname).values 
    return temp[ np.abs(temp[:,1]) < thlimit ] 

あなたは正しくファイルを読むために必要があるかもしれません関数の引数(ヘッダ、セパレーターなど)を学ぶためにパンダのドキュメントをチェックすることもできます。

+0

あなたの答えを遅く受け入れて申し訳ありません、私は別のプロジェクトに忙しかったです。実際にパンダの読者がうまくいけば、自分のデータに15-16倍のスピードアップが得られます。 – AtmosphericPrisonEscape

関連する問題