我正在开发一个项目,我有大量的输入文件来自pdes的数值解决方案。数据格式如下。
x \t y \t f(x,y)
对于y的每个值,我们有几个x值,并且在每个点评估函数值。我处理的数据大小约为[-3, 5]x[-3, 5]
,每个维度的0.01
步长为640,000
,因此原始数据文件非常大(大约{{1}}个条目)。将其读入内存也非常耗费时间,因为我正在使用的工具必须同时读取这种类型的多个原始数据文件。
我正在使用Python。
有没有办法在Python中有效地存储和读取这样的数据?我们的想法是包含一个工具,可以将这些原始数据文件按摩成可以更有效地读取的内容。我目前正致力于插入数据并存储一些系数(基本上通过计算时间替换内存),但我确信必须有一种更简单的方法来帮助记忆和时间。
感谢SOCommunity!
PS:我在Java中看到了相关的问题。我在这里完全使用Python。
答案 0 :(得分:3)
如果你正在使用numpy(而你可能应该这样),numpy.save
/ numpy.savez
和numpy.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)
非常快,结果文件小于5mb。
答案 1 :(得分:0)
有没有办法在Python中有效地存储和读取这样的数据?
如果您不需要一直将其保留在内存中,我建议将数据迁移到Sqlite数据库。这也允许您对数据进行SQL查询。