有效地存储和读取大数据文件

时间:2012-08-18 02:45:17

标签: python large-data

我正在开发一个项目,我有大量的输入文件来自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。

2 个答案:

答案 0 :(得分: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)

非常快,结果文件小于5mb。

答案 1 :(得分:0)

  

有没有办法在Python中有效地存储和读取这样的数据?

如果您不需要一直将其保留在内存中,我建议将数据迁移到Sqlite数据库。这也允许您对数据进行SQL查询。