在磁盘上存储一个大表,可以快速检索到指定的子集np.N阵列

2024-04-25 17:30:56 发布

您现在位置:Python中文网/ 问答频道 /正文

我需要在磁盘上存储一个表,并且能够快速地将该表的子集检索到numpy.ndarray。最好的办法是什么?我不介意在将数据集存储到磁盘之前花时间对其进行预处理,因为一旦创建数据集,它就不会被更改。你知道吗

我不希望编写任何C代码,而是依赖现有的python库。我正在考虑HDF5(使用pytables或h5py)、sqlite、numpy的memmap或自定义二进制文件格式。你知道吗

对于自定义文件,我将按标识符对行进行排序,并向文件中添加一个目录,对于每个标识符,该目录将指定包含与该标识符相关的数据的开始和结束文件偏移量。这在I/O方面可能会非常快,但代价是使用python而不是C代码(因为我不认为有一个库可以精确地做到这一点)。你知道吗

详情:

约1亿行、~5列floatstr数据。其中一列包含100000个不同的标识符(因此每个标识符大约有1000行)。要检索的子集总是由一组标识符指定(通常我需要检索~2000个标识符,所以占整个数据集的~2%)。你知道吗

python3.4、Linux、SSD驱动器(所以随机访问和顺序访问一样快)。你知道吗


Tags: 文件数据代码numpy目录sqlite时间标识符
1条回答
网友
1楼 · 发布于 2024-04-25 17:30:56

您可以创建一个区域引用数据集,其中每个元素都与~2000个标识符中的一个相关。你知道吗

然后引用特定标识符的Python代码如下所示: reg\ U ref-reg\ U ref\ U数据集[标识符] mysub=数据集[reg\u ref]

相关问题 更多 >