【发布时间】:2016-05-31 22:11:47
【问题描述】:
我使用 HDF5 以坐标格式存储大量稀疏数组(基本上,一个 M x 3 数组,用于存储每个非零元素的值、x 索引和 y 索引)。
这对于以迭代方式处理整个数据集非常有用,但我正在努力处理基于索引值的随机查找。
例如,给定一个 100x100 矩阵,我可能会像这样存储非稀疏元素:
[[1,2,3,4,5], // Data values
[13, 14, 55, 67, 80], // X-indices
[45, 12, 43, 55, 12]] // Y-indices
然后,例如,我希望获取10<x<32 和10<y<32 之间的所有数据值。使用当前格式,我所能做的就是遍历 x 和 y 索引数组以寻找匹配的索引。这是非常非常慢的,从磁盘进行多次读取(我的真实数据通常具有200000x200000 的大小,可能带有10000000 非稀疏元素)。
是否有更好的方法来存储大型(大于 RAM)稀疏矩阵并支持基于索引的快速查找?
我正在使用 HDF5,但很高兴被指向其他方向
【问题讨论】:
标签: sparse-matrix hdf5 random-access