私はスピードアップしたい科学的なpythonコードに取り組んでいます。特定の問題の 1 つは、書式設定された文字列を使用してテキスト ファイルに保存されている大量のデータを読み取ることです。split() と np.array() を使用したアプローチはうまく機能することがわかりましたが、FORTRAN で使用しているものと比較すると非常に遅いです。
残念ながら、私は C の専門家ではありません。以下に例を示します。
line =" 0.7711408E-01 0.7616138E-01 0.7521919E-01"
arr = np.array(line.split(),dtype=np.float)
print arr
これは機能しますが、大規模なデータ セットの場合は非常に遅くなります。このようなものはどうですか?
line =" 0.7711408E-01 0.7616138E-01 0.7521919E-01"
arr = np.zeros(3)
weave.inline("""sscanf(std::string(line).c_str(),"%f %f %f",arr);""",['line','arr'])
print arr