繁体   English   中英

如何将巨大的python列表存储为文件,然后在python中将文件作为列表读取?

[英]How to store HUGE python list as a file and then read the file as a list in python?

我在做一个机器学习项目,我的数据集是由数千张x光图片组成的,每次我想在这个项目上工作时,我都必须重新加载图片并对其进行预处理,这非常耗时,所以我想要读取我的图像一次并将数千个 224x224x3 矩阵的列表写入一个文件中,我可以在每次需要处理此项目时加载该文件。

我已经找到了一些允许我写/读列表的函数,但它们似乎并没有写出整个矩阵,而只是写了一部分:

这是我用来编写文件的代码:

with open(obj_dir +"train_data_p", "w") as file:
  file.write(str(train_data_p))

这是我用记事本打开训练数据集文件时得到的结果,正如您从“...”部分看到的那样,它仅显示矩阵片段:

[array([[[0.26666668, 0.26666668, 0.26666668],
        [0.32156864, 0.32156864, 0.32156864],
        [0.33333334, 0.33333334, 0.33333334],
        ...,
        [0.75686276, 0.75686276, 0.75686276],
        [0.77254903, 0.77254903, 0.77254903],
        [0.7764706 , 0.7764706 , 0.7764706 ]],
   [[0.27058825, 0.27058825, 0.27058825],
    [0.28627452, 0.28627452, 0.28627452],
    [0.31764707, 0.31764707, 0.31764707],
    ...,
    [0.7607843 , 0.7607843 , 0.7607843 ],
    [0.7647059 , 0.7647059 , 0.7647059 ],
    [0.8039216 , 0.8039216 , 0.8039216 ]],

   [[0.3019608 , 0.3019608 , 0.3019608 ],
    [0.34901962, 0.34901962, 0.34901962],
    [0.27058825, 0.27058825, 0.27058825],
    ...,
    [0.78431374, 0.78431374, 0.78431374],
    [0.7764706 , 0.7764706 , 0.7764706 ],
    [0.78431374, 0.78431374, 0.78431374]],

   ...,

   [[0.1254902 , 0.1254902 , 0.1254902 ],
    [0.1254902 , 0.1254902 , 0.1254902 ],
    [0.12156863, 0.12156863, 0.12156863],

如何写入/存储整个数据集,以便我不必每次都读取和处理图像? 请帮帮我!

您可以通过numpy.save()numpy.load()方法来完成

import numpy as np
np.save('/tmp/123', np.array([[1, 2, 3], [4, 5, 6]]))
np.load('/tmp/123.npy')

您在文件中看到省略号的原因是您将str(train_data_p)写入文件,而不是实际的train_data_p对象。

正如其他答案所指出的那样,有许多软件包可以帮助存储大数据。 如果您使用的是 numpy, 这个答案也可能对您有所帮助。

您可以轻松地使用内置模块序列化您的数据。

我们有不同的选项列表:

或 pip 中可用的任何其他 3rd 方序列化包。

有关序列化的更多信息https://en.wikipedia.org/wiki/Serialization

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM