3

背景

我有 ak n 维时间序列,每个都表示为 mx (n+1) 数组,其中包含浮点值(n 列加一表示日期)。

例子:

k(大约 400 万)个时间序列,看起来像

20100101    0.12    0.34    0.45    ...
20100105    0.45    0.43    0.21    ...
...         ...     ...     ... 

每天,我想为数据集的一个子集 (< k) 添加一个额外的行。所有数据集都以组的形式存储在一个hd5f 文件中。

问题

将行附加到数据集的最省时的方法是什么?

输入是一个 CSV 文件,看起来像

key1, key2, key3, key4, date, value1, value2, ... 

其中日期对于特定文件是唯一的,可以忽略。我有大约 400 万个数据集。问题是我必须查找密钥,获取完整的 numpy 数组,调整数组大小,添加行并再次存储数组。hd5f 文件的总大小约为 100 GB。知道如何加快速度吗?我认为我们可以同意使用 SQLite 或类似的东西是行不通的——只要我拥有所有数据,平均数据集将有超过 100 万个元素乘以 400 万个数据集。

谢谢!

4

1 回答 1

0

你看过PyTables吗?它是建立在 HDF5 库之上的分层数据库。

它有几种数组类型,但“表”类型听起来像是适用于您的数据格式。它基本上是 NumPy 记录数组的磁盘版本,其中每一列都可以是唯一的数据类型。表有一个 append 方法,可以很容易地添加额外的行。

就从 CSV 文件加载数据而言,numpy.loadtxt 相当快。它将文件作为 NumPy 记录数组加载到内存中。

于 2011-03-19T04:31:49.847 回答