如何保存大型Python numpy数据集?

如何保存大型Python numpy数据集?,python,opencv,numpy,keras,Python,Opencv,Numpy,Keras,我正在尝试创建一个自主的RC car,我的Python程序应该在给定的时间间隔内查询实时流,并将其添加到训练数据集中。我想收集的数据是OpenCV中当前图像的数组以及汽车的当前速度和角度。然后,我想将其加载到Keras中进行处理 我发现numpy.save()只将一个数组保存到一个文件中。根据我的需要保存数据的最佳/最有效的方法是什么 最简单的方法是np.savez_compressed()。这将使用与np.save()相同的格式保存任意数量的数组,但封装在标准Zip文件中 如果您需要能够向现有

我正在尝试创建一个自主的RC car,我的Python程序应该在给定的时间间隔内查询实时流,并将其添加到训练数据集中。我想收集的数据是OpenCV中当前图像的数组以及汽车的当前速度和角度。然后,我想将其加载到Keras中进行处理


我发现
numpy.save()
只将一个数组保存到一个文件中。根据我的需要保存数据的最佳/最有效的方法是什么

最简单的方法是
np.savez_compressed()
。这将使用与
np.save()
相同的格式保存任意数量的数组,但封装在标准Zip文件中


如果您需要能够向现有文件添加更多数组,您可以轻松地做到这一点,因为毕竟NumPy“.npz”格式只是一个Zip文件。因此,使用打开或创建一个Zip文件,然后使用
np.save()
将数组写入其中。API与此并不完全匹配,因此您可以首先构造一个
StringIO
“文件”,使用
np.save()
写入该文件,然后在
zipfile

中使用
writestr()
,与性能或效率相关的任何内容一样,自己测试它。关于“最好”的建议的问题是,它们可能每年都在变化

首先,您应该确定这是否是您应该解决的问题。如果您没有遇到性能问题或存储问题,那么在问题出现之前不要麻烦优化。无论你做什么,都不要把时间浪费在过早的优化上

接下来,假设这确实是一个问题,尝试各种保存方法,看看哪种方法在最短的时间内产生最小的结果。也许压缩是答案,但这可能会减慢速度?也许酸洗物体会更快?在你尝试之前谁知道呢


最后,权衡利弊,决定你可以在哪种方法上妥协;你几乎永远不会有一个银弹解决方案。当你在做这件事的时候,确定在这个问题上增加更多的CPU、RAM或磁盘空间是否能解决问题。云计算在这些领域为您提供了很大的空间。

使用数据库(有很多选择)或HDF5。Numpy可以存储多个数组(我想它叫savez),但实时更新不是它的目的(HDF5也可能有限制)。如果我使用HDF5,我是否能够将新信息附加到数据集,还是将其全部加载到内存中并一次性保存?。是的,它可能会工作,可能没有DB那么多的工作,它也是常见的keras输入之一,但我真的认为DB方法更强大(我相信HDF5比DBs更强大)。