稀疏数组 - 高效表示

时间:2014-04-10 11:13:54

标签: python arrays python-2.7 dictionary sparse-matrix

在我的一个程序中,我使用稀疏数据数组,目前实现为整数索引的数据,如下所示:

{
   0: {some dict with data},
   1: {some similar but yet different dict},
   10: {...},
   100: {...},
   200: {...},
   etc
}

事实证明,这个词汇为我的目的占用了太多的记忆。有没有办法更有效地存储稀疏数组?为了减少内存消耗,我准备牺牲访问时间毫秒。关键范围是0..0xFFFFFF,稀疏度约为30%。

虽然第三方模块可能是一个选项,但我对纯python解决方案更感兴趣。

感谢。

澄清一下,内部词汇不受优化,我只是试图以更好的方式安排它们。为简单起见,让我们假设我有字符串而不是那里的字母:

data = {
   0: "foo",
   1: "bar",
   10: "...",
   100: "...",
   200: "...",
   etc
}

1 个答案:

答案 0 :(得分:3)

如果结构是映射,那么类似于dict的对象确实是正确的选择,如果内存是个问题,那么显而易见的解决方案就是解决文件问题。最简单的方法可能是使用pandas系列,它可以用作dict,可以直接通过HDF5文件工作(参见http://pandas.pydata.org/pandas-docs/stable/io.html#hdf5-pytables

或者,对于纯python解决方案,您可以使用shelve模块。