python - 用Python管理大数据结构

标签 python arrays data-structures sparse-matrix

由于某种原因,我的 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/

相关文章:

python - 属性错误 : 'NoneType' object has no attribute 'dpi_scale_trans'

javascript - 将字符串数组与另一个字符串数组进行比较的优雅方法

java - 具有快速搜索和慢速插入/删除的整数有效内存列表

c++ - 合并两个排序数组的最坏情况下的比较次数?

algorithm - 修改版学生项目分配算法

python - Matplotlib 根据另一个 slider 的变化更新一个 slider

python - PyTorch 什么时候自动转换 Tensor dtype?

python - 如何在 Pandas 中聚合嵌套的 json 数组?

arrays - `System.CopyArray` 与 `System.Copy` ?

arrays - MATLAB:比较三个数组中的所有元素