如何在 Python 中将对象数组保存到文件中

Posted

技术标签:

【中文标题】如何在 Python 中将对象数组保存到文件中【英文标题】:How to save an array of objects to a file in Python 【发布时间】:2019-10-06 21:16:25 【问题描述】:

我知道如何使用 numpy.savenumpy.savez简单数据数组(如浮点类型值)保存到文件中。

我也知道如何使用pickle 模块将单个对象保存到文件中,虽然我还没有测试过。

问题是:如何将对象数组保存(和加载)到文件中?我可以结合上面公开的两种方法来实现这一点吗?有没有更好的办法?

【问题讨论】:

***.com/a/32850511/3923163 该对象数组的形状和数据类型是什么?你试过np.save吗?要加载它,您可能需要使用allow_pickle 参数。阅读saveload 的文档。 您可以创建对象列表。列表是单个对象。您知道如何使用 pickle 保存单个对象 :) @hpaulj 形状将是 (-1, 3) (三元组数组),我忘记了三元组的每个元素都是不同的类型(A 类、整数、B 类),所以我认为我不应该使用 numpy 数组,而应该使用普通的 python 列表。 @sanyash 没有考虑到这一点。我想我可以将我的数据排序为一个三元组(列表)列表,其中每个元素都是一个对象。这样整个数据结构将是一个 Python 列表,我应该能够使用 pickle 模块保存它。我会尝试并用我的结果更新问题。提前致谢! :) 【参考方案1】:

如果您知道如何腌制单个对象,要腌制一定数量的对象,您可以创建一个包含所有这些对象的结构(listsetdict,例如,将这些对象作为值,或者你自己的类,它以某种方式包含它们),这个结构将是一个可以腌制的对象。

【讨论】:

以上是关于如何在 Python 中将对象数组保存到文件中的主要内容,如果未能解决你的问题,请参考以下文章

如何在python中将数组保存到文本文件?

如何在 python 3 中将类对象列表“保存”到我的程序中?

如何使用node.js中的循环将表单数据保存为对象和对象数组到mongodb?

在javascript中将对象数组复制到另一个数组而没有对象引用(深拷贝)

如何在 Swift 中归档和取消归档自定义对象?或者如何在 Swift 中将自定义对象保存到 NSUserDefaults?

如何在 CGAL 中将三角测量对象(Constrained_Delaunay_triangulation_2)保存到文件(vtk、vtu、msh 等)