Python 如何在for循环中使用numpy.savez

Python 如何在for循环中使用numpy.savez,python,arrays,python-3.x,Python,Arrays,Python 3.x,我想在循环中使用numpy.savez,这样我就可以直接将数组保存在文件中,并在处理大型数据集时保存ram内存。每次迭代都会对数组执行一些工作,我的想法是将每次迭代的结果数组堆叠到npz文件中以前的数组中 import numpy as np a= [2,3,4] b= [5,6,7] steps=10 for n in range(steps): a=a*3 b=b*4 np.savez('filename.npz', a=a, b=b) 但是当我加载文件时,只有上一次迭代中的数组可用。

我想在循环中使用
numpy.savez
,这样我就可以直接将数组保存在文件中,并在处理大型数据集时保存ram内存。每次迭代都会对数组执行一些工作,我的想法是将每次迭代的结果数组堆叠到npz文件中以前的数组中

import numpy as np
a= [2,3,4]
b= [5,6,7]
steps=10
for n in range(steps):
 a=a*3
 b=b*4
np.savez('filename.npz', a=a, b=b)

但是当我加载文件时,只有上一次迭代中的数组可用。我知道文件在每次迭代中都会被覆盖,但有没有办法将所有数组堆叠到文件中?

您可以执行以下操作:

将numpy导入为np
a=np.数组([2,3,4])
b=np.数组([5,6,7])
步骤=10
然后,为了在每次迭代中(在循环内部)保存不同的文件,您可以使用
格式

范围内i的
(步骤):
a=a*3
b=b*3
np.savez('filename{:03}.npz'。格式(i),a=a,b=b)
要加载:

data=np.load('filename009.npz')
打印(数据['a'])#[118098 177147 236196]
打印(数据['b'])#[295245 354294 413343]
data2=np.load('filename004.npz')
打印(数据2['b'])#[121514581701]
打印(数据2['a'])#[486 729 972]
你甚至可以使用像时间戳这样疯狂的东西

从日期时间导入日期时间
对于范围内的uu(步):
a=a*3
b=b*3
np.savez('filename-{}.npz'.format(datetime.now().isoformat(sep=''''''u',timespec='auto')),a=a,b=b)
结果是:

filename-2020-01-24_00:02:42.013775.npz  filename-2020-01-24_00:02:42.017066.npz
filename-2020-01-24_00:02:42.014601.npz  filename-2020-01-24_00:02:42.017710.npz
filename-2020-01-24_00:02:42.015249.npz  filename-2020-01-24_00:02:42.018611.npz
filename-2020-01-24_00:02:42.015946.npz  filename-2020-01-24_00:02:42.019326.npz
filename-2020-01-24_00:02:42.016516.npz  filename-2020-01-24_00:02:42.019864.npz

你认为
numpy.savez()
的作用是什么?在我处理庞大的数据集时,将阵列保存在一个文件中并保存ram内存。你能分享你的实际程序吗?