5

我正在做一个项目,我有来自 pdes 数值解的大型输入文件。数据格式如下。

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

对于每个 y 值,我们有几个 x 值,以及在每个点评估的函数值。我正在处理的数据的大小大约是每个维度[-3, 5]x[-3, 5]的步长0.01,因此原始数据文件非常大(关于640,000条目)。将其读入内存也非常耗时,因为我正在使用的工具必须同时读取多个这种类型的原始数据文件。

我正在使用 Python。

有没有办法在 Python 中有效地存储和读取这样的数据?这个想法是包含一个工具,将这些原始数据文件按摩成可以更有效地读取的东西。我目前正在对数据进行插值并存储一些系数(本质上是通过计算时间来替换内存),但我确信必须有一种更简单的方法来帮助内存和时间。

感谢 SOCommunity!

PS:我在Java中看到了相关的问题。我在这里完全使用 Python。

4

2 回答 2

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。

于 2012-08-18T03:10:51.933 回答
0

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

If you don't need to keep it in memory all the time, I would suggest migrating the data to an Sqlite database. This would also allow you making SQL queries on the data.

于 2017-09-22T06:35:48.057 回答