由于某种原因,我的 python 程序中需要一个四维矩阵,其尺寸为 10000x20000x4000x10。当我尝试使用 python 中的普通数组来实现它时,我发现由于我的可用系统资源有限,这是不可能的。管理如此大的数据结构的最佳方法是什么?是使用数据库的唯一方法吗?
编辑:因为这取决于我的目标是什么,我将简短地描述我正在做的事情。我正在尝试将 1 维背包问题扩展到 4 维。有 2 个矩阵保留和解必须访问。当我尝试用这个来解决路由器的资源分配问题时,这两个矩阵如下所示:
keep = [[[[0 for x in xrange(CORE.cap + 1)*1000]for x in xrange(RAM.cap + 1)*1000]for x in xrange(NIC.cap + 1)*1000]for x in xrange(len(JOBS) + 1)]
solution = [[[[0 for x in xrange(CORE.cap + 1)*1000]for x in xrange(RAM.cap + 1)*1000]for x in xrange(NIC.cap + 1)*1000]for x in xrange(len(JOBS) + 1)]
这些矩阵中有很多 0,我每次都必须访问矩阵的每一行。
最佳答案
对于一维背包,你只需要在内存中保存矩阵的最后两行。其余的可以使用游程编码存储到磁盘,因为大多数行将包含与前一行相同的值。也许,对于 4D 背包,您可以在内存中执行类似的操作(例如只保留一架飞机?)并将其余部分存储到磁盘。
或者,您可以使用背包的分支定界算法或使用近似算法,在其中创建较小的元素和背包。
关于python - 用Python管理大数据结构,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17989283/