如何在pytables/hdf5中存储宽表

acr*_*bia 11 python numpy hdf5 pytables

我有来自csv的数据,它有几千列和一万(左右)行.在每列中,数据具有相同的类型,但不同的列具有不同类型的数据*.以前我一直在从numpy和磁盘上存储数据,但它很慢,特别是因为通常我想加载一些列的子集而不是所有列.

我想使用pytables将数据放入hdf5,我的第一种方法是将数据放在一个表中,每个csv列有一个hdf5列.不幸的是,这不起作用,我假设因为512(软)列限制.

存储此数据的合理方法是什么?

*我的意思是,从文本转换后的数据类型.

Ant*_*atz 2

事实上,这可能不可能以天真的方式做到。HDF5 为每个数据集的元数据分配 64 kb 的空间。该元数据包括列的类型。因此,虽然列数是一个软限制,但在 2-3000 范围内,您通常会用完空间来存储元数据(取决于列名称的长度等)。

此外,numpy不是将列数限制为32吗?你现在如何用 numpy 表示数据?任何可以进入 numpy 数组的内容都应该对应于 pytables Array 类。

  • numpy 的 32 列限制?没有这样的限制。如果有这样的限制,numpy 永远不会起飞。 (4认同)