python多维数据存储_在Python中存储和重新加载大型多维数据集

我将运行大量模拟,产生大量需要存储的数据,以后再次访问.我的模拟程序的输出数据被写入文本文件(每个模拟一个).我计划编写一个

Python程序来读取这些文本文件,然后以更便于以后分析的格式存储数据.经过相当多的搜索,我认为我正在遭受信息过载,所以我将这个问题提交给Stack Overflow以获取一些建议.以下是详细信息:

我的数据基本上采用多维数组的形式,其中每个条目看起来像这样:

data[ stringArg1, stringArg2, stringArg3, stringArg4, intArg1 ] = [ floatResult01, floatResult02, ..., floatResult12 ]

每个参数大致具有以下数量的潜在值:

stringArg1:50

stringArg2:20

stringArg3:6

stringArg4:24

intArg1:10,000

但请注意,数据集将是稀疏的.例如,对于stringArg1的给定值,将仅填充大约16个stringArg2值.此外,对于(stringArg1,stringArg2)的给定组合,将填充大约5000个intArg1值.第3和第4个字符串参数是总是充满了.

因此,使用这些数字,我的数组将有大约50 * 16 * 6 * 24 * 5000 = 576,000,000个结果列表.

我正在寻找存储此数组的最佳方法,以便我可以保存它并稍后重新打开它以添加更多数据,更新现有数据或查询现有数据进行分析.到目前为止,我已经研究了三种不同的方法:

>关系数据库

> PyTables

>使用元组作为字典键的Python字典(使用pickle来保存和重新加载)

我在这三种方法中遇到了一个问题,我总是最终存储(stringArg1,stringArg2,stringArg3,stringArg4,intArg1)的每个元组组合,作为表中的字段,或者作为Python字典中的键.从我(可能是天真的)的角度来看,似乎这不应该是必要的.如果这些都是整数参数,那么它们只会形成数组中每个数据条目的地址,并且不需要将所有潜在的地址组合存储在单独的字段中.例如,如果我有一个2×2数组= [[100,200],[300,400]],你可以通过询问地址数组[0] [1]的值来检索值.您不需要在其他地方存储所有可能的地址元组(0,0)(0,1)(1,0)(1,1).所以我希望找到解决这个问题的方法.

我希望能够做的是在PyTables中定义一个表,其中第一个表中的单元格包含其他表.例如,顶级表将有两列.第一列中的条目将是stringArg1的可能值.第二列中的每个条目都是一个表.这些子表将有两列,第一列是stringArg2的所有可能值,第二列是另一列子子表……

这种解决方案可以直接浏览和查询(特别是如果我可以使用ViTables浏览数据).问题是PyTables似乎不支持让一个表的单元格包含其他表格.所以我似乎在那里遇到了死胡同.

我一直在阅读数据仓库和星型模式方法,但看起来你的事实表似乎需要包含每个可能的参数组合的元组.

好的,所以我几乎就是这样.任何和所有建议将非常感谢.在这一点上,我一直在寻找我的大脑疼痛.我觉得是时候问专家了.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值