如何使用numpy.savez将带有子数组的数组保存为单独的.npy文件
我最近刚开始使用numpy,想了解一些事情。
我有一个numpy数组,分割后看起来是这样的:
[array([1,2,3]),
array([4,5,6])]
我想用numpy.savez把这个主数组保存到一个.npz的压缩文件里,并且每个子数组都放在自己的.npy文件中。
我以为用这个方法:
numpy.savez('dataFile', mainArray)
可以实现,但结果只创建了一个包含单个.npy文件的压缩文件,文件名是arr_0.npy。
有没有办法做到这一点?如果有的话,是否可以用这种方法处理任何数组和任意数量的子数组?我获取这些数组是从一个.bin文件中读取的,这个文件可能包含任意数量的元素,这些元素会分割成任意数量的数组。这就是我遇到困难的原因。
有没有办法向已经创建的.npz文件中添加文件?
2 个回答
1
如果你想把主数组里的子数组保存下来,那你可能需要手动使用 save
,也就是说,你得自己去调用这个命令。
mainArray = [np.array([1,2,3]), np.array([4,5,6])]
for i in range(len(mainArray)):
np.save('dataFile_%i'%i, mainArray[i] )
或者你可以使用 savez
,这样可以把子数组单独保存,等需要的时候再加载它们。
mainArray = [np.array([1,2,3]), np.array([4,5,6])]
np.savez('dataFile', mainArray[0], mainArray[1])
npzfile = np.load('dataFile.npz')
npzfile['arr_0']
npzfile['arr_1']
5
经过更多的研究,我找到了我主要问题的答案。我发现可以使用 *arg 来遍历数组列表并将它们相加。
我把代码改成了
numpy.savez('test', *[mainArray[x] for x in rang(len(mainArray))])
这样我就找到了我想要的解决方案。谢谢你的帮助。