【发布时间】:2020-07-21 23:02:30
【问题描述】:
我想将多个大型 numpy 数组保存到一个 numpy 二进制文件中,以防止我的代码崩溃,但是当我添加数组时,它似乎一直被覆盖。最后保存的数组是打开和读取 save.npy 时设置为 allarrays 的内容。这是我的代码:
with open('save.npy', 'wb') as f:
for num in range(500):
array = np.random.rand(100,400)
np.save(f, array)
with open('save.npy', 'rb') as f:
allarrays = np.load(f)
如果该文件以前存在,我希望在重新运行代码时覆盖它。这就是我选择“wb”而不是“ab”的原因。
【问题讨论】:
-
您的代码所做的只是覆盖之前保存的数组。您可以创建一个包含所有数据的数组,也可以使用h5py 创建一个数据集
-
我无法创建一个包含我所有数据的数组,因为当它变得太高时它开始崩溃,特别是对于大小相对较大的图像文件(每个文件 40mb,其中 500 多个) .我用于“转换”我的数组而不是随机生成数组(如此处所示)的库是一个 C 扩展库,当文件大小过大时,某些文件似乎会崩溃。 h5py 会对此有所帮助吗?
-
我的想法是将转换后的数组保存到 numpy 二进制文件,因为每次我转换数组以节省内存空间并将其临时放入磁盘空间。
-
是的,您可以为每个单独的文件名创建一个数据集并相应地读/写
-
h5py 数据集也将比 numpy 文件快得多
标签: python python-3.x numpy binaryfiles