首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将大型字典存储到Python文件中

将大型字典存储到Python文件中
EN

Stack Overflow用户
提问于 2015-01-20 23:59:42
回答 2查看 7.3K关注 0票数 5

我有一本字典,里面有很多词条,还有一个巨大的向量作为值。这些向量可以是60.000维大,我在字典中有大约60.000个条目。为了节省时间,我想在计算之后存储这个。然而,使用泡菜导致了一个巨大的文件。我尝试过存储到JSON,但是文件仍然非常大(就像在50个尺寸较小的条目样本中的10.5 MB )。我还读过关于稀疏矩阵的文章。由于大多数条目为0,这是一种可能性。这会减少文件的大小吗?还有其他方法来存储这些信息吗?还是我只是运气不好?

更新:

谢谢大家的答复。我想存储这些数据,因为这些是字数。例如,当给定句子时,我存储单词0(在数组中的位置0)出现在句子中的次数。显然,所有句子中的单词比一个句子中出现的单词多,因此出现了许多零。然后,我想用这个数组训练至少三个,也许六个分类器。使用字数创建数组似乎更容易,然后在夜间运行分类器来进行训练和测试。我用滑雪板来做这个。选择这种格式是为了与其他特征向量格式保持一致,这就是为什么我用这种方式处理问题的原因。如果不是这样的话,请告诉我。我非常清楚,在高效编码方面,我还有很多需要学习的地方!

我还开始实现稀疏矩阵。这个文件现在更大了(用300句例句进行测试)。

更新2:谢谢大家的提示。约翰·梅是对的,他不需要存储数据。他和迈克McKerns都告诉我使用稀疏矩阵,这大大加快了计算速度!所以谢谢你的意见。现在我有了一个新的工具在我的武器库!

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-01-21 00:41:52

请看我对一个非常密切相关的问题https://stackoverflow.com/a/25244747/2379433的回答,如果您可以对多个文件而不是单个文件进行腌制。

还请参阅:https://stackoverflow.com/a/21948720/2379433以获得其他潜在的改进,在这里也可以看到:https://stackoverflow.com/a/24471659/2379433

如果您使用的是numpy数组,它可能非常高效,因为kleptojoblib都知道如何为array使用最小状态表示。如果数组的大多数元素都是零,那么无论如何,都要转换成稀疏矩阵.你会发现数组的存储大小有很大的节省。

正如上面的链接所讨论的那样,您可以使用klepto --它为您提供了使用公共API轻松地将字典存储到磁盘或数据库的能力。klepto还使您能够选择存储格式(picklejson等) -- HDF5即将到来。它可以利用专门的泡菜格式(如numpy)和压缩(如果您关心的是大小而不是速度)。

klepto为您提供了将字典存储在“所有一体”文件或“每个条目”文件中的选项,还可以利用多线程或多线程--这意味着您可以并行地将字典项保存和加载到后端/从后端加载。

票数 1
EN

Stack Overflow用户

发布于 2015-01-21 01:02:05

六万维是指六万元素吗?如果是这种情况,并且数字是1..10,那么一种合理的紧凑但仍然有效的方法是使用Python对象的字典,每个元素具有一个字节(类型为array.array )。

内存中的大小应该是大约60000个条目x60000字节,总计3.35Gb的数据。

该数据结构也与磁盘的大小相同。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/28057407

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档