5

私は、pdes の数値解から得られる大きな入力ファイルがあるプロジェクトに取り組んでいます。データのフォーマットは以下の通りです。

x \t y \t f(x,y)

y の値ごとに、x の値がいくつかあり、各点で関数値が評価されます。私が扱っているデータのサイズは、各次元で約[-3, 5]x[-3, 5]のステップである0.01ため、生データ ファイルはかなり大きくなります (640,000エントリについて)。私が取り組んでいるツールは、このタイプの生データファイルを同時に複数読み取る必要があるため、メモリへの読み取りにもかなりの時間がかかります。

私はPythonを使用しています。

このようなデータをPythonで効率的に保存および読み取る方法はありますか? アイデアは、これらの生データ ファイルをより効率的に読み取ることができるものに変換するツールを含めることです。私は現在、データの補間といくつかの係数の保存に取り組んでいます (基本的に、時間を計算することでメモリを置き換えます) が、メモリと時間の両方に役立つより簡単な方法があるはずです。

ありがとうございます!

PS: Java で関連する質問を見ました。私はここで完全に Python に取り組んでいます。

4

2 に答える 2

3

numpy を使用している場合 (おそらく使用する必要があります)、numpy.save/numpy.saveznumpy.loadこれを簡単に処理できるはずです。

例えば:

import numpy as np
xs = np.linspace(-3, 5, 800)
ys = np.linspace(-3, 5, 800)
f_vals = np.random.normal(size=(xs.size, ys.size))
np.savez('the_file.npz', xs=xs, ys=ys, f=f_vals)

非常に高速で、結果のファイルは 5 MB 未満です。

于 2012-08-18T03:10:51.933 に答える