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

时间:2017-05-27 01:30:27

标签: python opencv numpy keras

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

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

2 个答案:

答案 0 :(得分:1)

与性能或效率有关,请自行测试。对“最佳”事物的建议存在的问题是,它们可能会逐年变化。

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

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

最后,权衡权衡并决定你可以妥协的方法;你几乎从来没有一个银弹解决方案。在此过程中,确定是否只是在问题上添加更多CPU,RAM或磁盘空间就可以解决问题。云计算为这些领域提供了很大的空间。

答案 1 :(得分:0)

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

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